php pdo执行数组引用

php pdo执行数组引用,php,Php,下面准备的语句没有插入到数据库中 $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'=>$

下面准备的语句没有插入到数据库中

$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的消毒

Myabe您应该尝试:

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

在您的案例中唯一的区别是
$sid2
“$sid2”

如果
$sid2
是一个字符串,那么
$sid2
“$sid2”
相同,但是当
$sid2
空时,事情就变了。如果
$sid2
null
,则
“$sid2”
将为空字符串


如果
sid2
的列具有
notnull
约束,则无法插入NULL值,但可以插入空字符串

对于准备好的声明,您不应该引用。