0

投稿値が空白の場合、データベースに NULL を更新したいと考えています。空白でない場合は、投稿された値を挿入したい。

if(empty($post['gallery']))$post['gallery'] = NULL;

これはかなり大きなクエリなので、私が興味を持っているのは次のとおりです。

"article.article_gallery_id = '".$post['gallery']."', ".

上記は NULL を挿入するのではなく、0 を挿入します。

これはNULLを挿入します:

"article.article_gallery_id = NULL, ".

問題は、$post['gallery'] を一重引用符で囲むことにあると思います。それらを削除すると、クエリはまったく機能しません。

どうすればこれを修正できますか?

私は PDO を使用したくありませんし、セキュリティについて心配する必要もありません。例として少し抜粋しました。

4

5 に答える 5

1

PHPは、文字列に入れるときにnullSQL に変換しません。 値が空の場合、クエリは次のようになる必要があります。 空でない場合、クエリは次のようにする必要があります。 引用符の使用と引用符の使用とキーワードを比較します。この方法でクエリを明示的にフォーマットする必要があります。PHP値に依存することはできません。NULL
article.article_gallery_id = NULL
article.article_gallery_id = 'value'
NULLnull

于 2013-06-06T16:22:35.153 に答える
0

SQL で null を引用符で囲む必要はありません。

if(empty($post['gallery'])){ $post['gallery'] = "NULL"; } 
$sql = "UPDATE article SET article.article_gallery_id = " . $post['gallery'] . " WHERE somefield = 'someValue'";

減価償却済みの MySQL 機能を使用することは避けてください。MySQLiまたはPDOを試す

于 2013-06-06T16:23:15.310 に答える
-1

テーブルのデフォルトを null に設定する必要がありますが、実際にこれを修正するには、引用符を切り替える必要があります。pHP は " とそうでない var を評価するので、文字通り null ではなく空の値を設定します。

最善の解決策はこれですが

if(empty($post['gallery']))$post['gallery'] = "NULL";

次に、実際にmysqlが必要とするNULL値を入れます

于 2013-06-06T16:20:51.973 に答える