我要疯了[语法错误][已关闭]

问题描述 投票:0回答:4

我不敢相信我遇到了这个问题。我一直在寻找,但我看不出有什么问题。我讨厌这个错误消息。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' poster_ip, message, posted, thread_id INTO posts ' at line 1



mysql_query("INSERT poster, poster_ip, message, posted, thread_id
                INTO posts
                VALUES (
    {$post_info['poster']}, 
    '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', 
    '".mysql_real_escape_string($post_info['message'])."', 
    {$post_info['posted']}, 
    {$post_info['thread_id']}") or die (mysql_error());
php mysql mysql-error-1064
4个回答
7
投票

您的 SQL 语法错误

您应该使用类似的东西:

INSERT INTO posts (poster, poster_ip, message, posted, thread_id) VALUES (...)

3
投票

也许你应该看看文档;) 插入语法

如果要放置列名称,则应将其放在表名称之后。

示例: 插入表(col1,col2)值(val1,val2)


1
投票

看起来是练习一些调试技术的好机会。尝试构建要传递给函数的字符串并将其分配给一个变量,然后回显该变量以查看您实际传递给函数的内容。通过这种方式,您可以了解到很多关于为什么会出现错误的信息。此外,了解要插入值的列的数据类型也将有所帮助。


0
投票

我编写此代码是为了向您展示为什么数组对于查询生成很有用,并且如果您将来需要添加更多字段,则不太可能出现语法错误。

$fields = array('poster, poster_ip, message, posted, thread_id'); // Our fields
$table = 'posts'; // Our table name
$values = array(
    $post_info['poster'], 
    $_SERVER['REMOTE_ADDR'], 
    $post_info['message'], 
    $post_info['posted'], 
    $post_info['thread_id']
);
$values = array_map('mysql_real_escape_string', $values); // Secure all inputs
// Generate query
$query = "INSERT INTO $table (" . implode(',', $fields) . ") VALUES ('" . implode("','", $values . "')";
// Run query
$result = mysql_query($query) or die('query error: ' . mysql_error());
© www.soinside.com 2019 - 2024. All rights reserved.