php pdo执行数组引用

时间:2012-07-06 05:29:42

标签: 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'=>$sid2,':position'=>$position,':name'=>$name));

当我添加引号来执行数组值时,插入工作。

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

我想知道的是通过添加引文是否会影响PDO的清理?

2 个答案:

答案 0 :(得分:2)

您的情况中唯一的区别$sid2"$sid2"

如果$sid2是一个字符串,那么$sid2"$sid2"相同,但当$sid2null时,事情就会发生变化。如果$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),
 )
);