我无法相信我遇到了这个问题。我一直在寻找,但我看不出有什么问题。我讨厌这个错误信息。
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());
答案 0 :(得分:7)
你应该使用类似的东西:
INSERT INTO posts (poster, poster_ip, message, posted, thread_id) VALUES (...)
答案 1 :(得分:3)
答案 2 :(得分:1)
看起来是练习一些调试技巧的好机会。尝试构建传递给函数的字符串并将其分配给变量,然后回显该变量以查看实际传递给函数的内容。你可以通过这种方式了解到为什么会出现错误。此外,有助于了解要插入值的列的数据类型。
答案 3 :(得分: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());