3

PHP でいくつかの基本的な挿入クエリを作成しようとしていますが、エラーが発生し続けますが、理由が本当にわかりません。何か問題があるかどうかを確認してください。

    mysql_query("
INSERT INTO itens (nome, data, cliente, link, desc, img) VALUES ($nome,$data,$cliente,$link,$desc,$img)
") or die(mysql_error());

アップデート

OPの削除された回答から引き出されたコードは次のとおりです。

mysql_query("INSERT INTO itens (nome, data, cliente, link, `desc`, img) 
VALUES ($nome,$data,$cliente,$link,$desc,$img)") or die(mysql_error());

エラーは次のとおりです。

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 'kl,j)' at line 2

kl と j は、フォームに挿入する最後の 2 つのものです。

4

2 に答える 2

7

DESCbacktickは MySQL の予約済みキーワードです。exでエスケープする必要があります。

INSERT INTO itens (nome, data, cliente, link, `desc`, img) 
VALUES ($nome,$data,$cliente,$link,$desc,$img)

あなたのクエリは で脆弱です。SQL Injectionそれを防ぐ方法については、以下の記事をお読みください。

于 2012-12-18T15:59:23.197 に答える
2

何よりもまず-Escape 、Escape、Escape、またはPDO/mysqliとプリペアドステートメントを学びます。

2番目-列名に使用できない予約済みキーワードを把握します。それらはバックティックを使用してエスケープする必要があります。

$sql = sprintf("INSERT INTO itens (nome, data, cliente, link, `desc`, img) VALUES ('%s', '%s', '%s', '%s', '%s', '%s');", 
    mysql_real_escape_string($nome),
    mysql_real_escape_string($data),
    mysql_real_escape_string($cliente),
    mysql_real_escape_string($link),
    mysql_real_escape_string($desc),
    mysql_real_escape_string($img)
);

mysql_query($sql);

itens3番目-テーブル名( vs )にタイプミスをしたと思いますitems

于 2012-12-18T16:05:12.887 に答える