以下准备好的声明不会插入到数据库中。
$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的清理?
答案 0 :(得分:2)
您的情况中唯一的区别是$sid2
和"$sid2"
。
如果$sid2
是一个字符串,那么$sid2
与"$sid2"
相同,但当$sid2
为null
时,事情就会发生变化。如果$sid2
null
,那么"$sid2"
将为空字符串""
。
如果您的sid2
列有NOT NULL
约束,那么您将无法插入空值,但您可以插入空字符串。
答案 1 :(得分:0)
Myabe你应该尝试:
$new->execute(
array(
':sid'=>$connectdb->quote($sid),
':sid2'=>$connectdb->quote($sid2),
':position'=>$connectdb->quote($position),
':name'=>$connectdb->quote($name),
)
);