1

以下の準備済みステートメントは、データベースに挿入されません。

$sid =1;
$sid2 = $GET['sid2']; //empty
$position = 0;
$name = "John";

$new = $connectdb->prepare("INSERT INTO `table1` VALUES ('',:sid,:sid2,:position,:name)");
                $new->execute(array(':sid'=>$sid,':sid2'=>$sid2,':position'=>$position,':name'=>$name));

引用符を追加して配列値を実行すると、挿入が機能します。

$new->execute(array(':sid'=>"$sid",':sid2'=>"$sid2",':position'=>"$position",':name'=>"$name"));

私が知りたいのは、引用符を追加することで、これが PDO のサニタイズに影響するかどうかです。

4

2 に答える 2

2

あなたの場合の唯一の違い$sid2"$sid2"です。

$sid2が文字列の場合は$sid2と同じですが"$sid2"、 が の場合$sid2null事情が異なります。$sid2の場合null空の文字列"$sid2"になります。""

列にsid2制約がNOT NULLある場合、null 値の挿入に失敗しますが、空の文字列を挿入できます。

于 2012-07-06T05:59:35.907 に答える
0

あなたがしようとする必要があります:

$new->execute(
 array(
  ':sid'=>$connectdb->quote($sid),
  ':sid2'=>$connectdb->quote($sid2),
  ':position'=>$connectdb->quote($position),
  ':name'=>$connectdb->quote($name),
 )
);
于 2012-07-06T05:43:36.523 に答える