0

変数を次のように設定しようとしていますNULL

$q = NULL.",";
$q .= 'abc';

そしてデータベースに保存します:

mysql_query("INSERT INTO table (col_a, col_b) VALUES (".$q.")")

しかし、これはエラーメッセージを生成します:

INSERT INTO table (col_a, col_b) VALUES (,'abc')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 ','abc')' at line 2

NULL変数からデータベースに保存する方法は?

4

4 に答える 4

5

値をnullにする列を削除できます。例:

$q = 'abc';
mysql_query("INSERT INTO table (col_b) VALUES ($q)")

NULLまたは、値が動的である場合、現在のコードの唯一の問題は、文字列に含まれていないことです。

$q = "NULL,";
$q .= "'abc'";
mysql_query("INSERT INTO table (col_a, col_b) VALUES ($q)")

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

于 2012-12-25T01:33:58.027 に答える
2

NULLを連結し、それを解析しようとしています。これは、ステートメントでは実際には次のようになります。

、abc

期待の代わりに

NULL、abc

したがって、ステートメントにリテラル「NULL」を書き込むだけです。

于 2012-12-25T01:34:40.663 に答える
2

リテラルの引用符で囲まれていない文字列をクエリ内に渡します。

$q = "NULL,";
于 2012-12-25T01:35:03.777 に答える
2
$q = "NULL,";
$q .= '"abc"';

クエリNULL,"abc"に含めることができるものを提供します。

あなたが投稿したエラーは、質問のコードに起因するものではありませんでした。引用符はabcどこから来たのですか?SQLにも表示されるようにするには、php変数の引用符で囲む必要があります。

于 2012-12-25T01:35:16.853 に答える