0

私は(要するに)次のようなコードを持っています:

...
mysql_query("INSERT INTO table1 (x,y,z) VALUES (".$_POST['a'].",".$_POST['b'].",\"".$_POST['c']."\")");
...

a数値、b数値だが形式cは空、文字列値、空でもかまいません (問題ありません)。

次に、MySQL の場合は次のようになります。

INSERT INTO table1 (x,y,z) VALUES (2,,"");

問題は値の一部であり、 は のようなものではありませんb。それを機能させるための解決策はありますか?データベース設定、または PHP で。大きなテーブルがあり、すべての$_POST値を確認することはできません。

ありがとう

4

3 に答える 3

2

次のようにクエリを使用できます。

mysql_query("INSERT INTO table1 (x,y,z) VALUES ('{$_POST['a']}', '{$_POST['b']}', '{$_POST['c']}')");

''ポストスーパーグローバルのいずれかが空の場合に渡されます。

于 2013-07-25T16:14:10.880 に答える
0

値をテストして、空の場合または設定されていない場合$_POST['b']に置き換えますnull(フォームから取得している空の値にソリューションを適応させ$_POST['b']ます):

mysql_query("INSERT INTO table1 (x,y,z)
    VALUES (".$_POST['a'].",".((isset($_POST['b']) || $_POST['b']=="") ? $_POST['b'] : "NULL").",\"".$_POST['c']."\")");

余談ですが、mysql_* 拡張機能は非推奨なので使用しないでください。代わりにPDOまたはMSQLiを使用してください。

于 2013-07-25T16:04:19.537 に答える
0

セットへの挿入を使用して、条件付きでクエリを作成できます。

$sql = "INSERT INTO table1 set ";
$sql.= "x = '".mysql_real_escape_string(htmlentities($_POST['a']))."' ";
if (isset($_POST['b']) && ($_POST['b'] != '')){
    $sql.= ", y = '".mysql_real_escape_string(htmlentities($_POST['b']))."' ";
}
if (isset($_POST['c']) && ($_POST['c'] != '')){
    $sql.= ", z = '".mysql_real_escape_string(htmlentities($_POST['c']))."' ";
}

mysql_query($sql);

また、他の人が指摘したように、mysqli または PDO を使用してみてください。

于 2013-07-25T16:15:25.310 に答える