我疯了[语法错误]

时间:2010-07-27 03:22:15

标签: mysql mysql-error-1064

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

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());

4 个答案:

答案 0 :(得分:7)

Your SQL syntax is wrong

你应该使用类似的东西:

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

答案 1 :(得分:3)

也许你应该看看doc;) Insert Syntax

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

实施例: INSERT INTO表(col1,col2)VALUES(val1,val2)

答案 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());