1

私はこの問題を抱えているとは信じられません。私は見たり見たりしてきましたが、何が悪いのかわかりません。このエラー メッセージが嫌いです。

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

4 に答える 4

7

SQL 構文が間違っています。

次のようなものを使用する必要があります。

INSERT INTO posts (poster, poster_ip, message, posted, thread_id) VALUES (...)
于 2010-07-27T03:23:44.097 に答える
3

多分あなたはドキュメントを見るべきです;) 挿入構文

列名を配置する場合は、テーブル名の後に配置する必要があります。

例: INSERT INTO テーブル (col1、col2) VALUES (val1、val2)

于 2010-07-27T03:25:17.823 に答える
1

いくつかのデバッグ手法を練習する良い機会のようです。関数に渡す文字列を作成して変数に割り当て、その変数をエコーし​​て、実際に関数に渡す内容を確認してください。エラーが発生する理由について、そのようにして多くのことを学ぶことができます。また、値を挿入する列のデータ型を知っておくと役立ちます。

于 2010-07-27T03:27:35.053 に答える
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());
于 2010-07-27T11:35:52.017 に答える