我不敢相信我遇到了这个问题。我一直在寻找,但我看不出有什么问题。我讨厌这个错误消息。
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());
您应该使用类似的东西:
INSERT INTO posts (poster, poster_ip, message, posted, thread_id) VALUES (...)
看起来是练习一些调试技术的好机会。尝试构建要传递给函数的字符串并将其分配给一个变量,然后回显该变量以查看您实际传递给函数的内容。通过这种方式,您可以了解到很多关于为什么会出现错误的信息。此外,了解要插入值的列的数据类型也将有所帮助。
我编写此代码是为了向您展示为什么数组对于查询生成很有用,并且如果您将来需要添加更多字段,则不太可能出现语法错误。
$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());