PHP + PDO:如果param为空,则绑定null

时间:2010-08-27 18:20:06

标签: php sql-server pdo nullable

我正在尝试这个(并且在用户发送之前处理所有PoST var,没有SQL注入问题):

$stmt = $con->prepare($sql);
$stmt->bindParam(":1", $this->getPes_cdpessoa());
$stmt->bindParam(":2", $this->getPdf_nupessoa_def());

当这些变量中的任何变量为NULL时,PDO会发出声音并且不执行我的声明,并且在我的表格中,我允许这些字段为空格。

有没有办法检查值是否为空,pdo只是将NULL绑定到那时(我的意思是,如果(空($ _ POST ['blablabla')...)每个单一参数的智能方式?

3 个答案:

答案 0 :(得分:5)

尝试:

$stmt = $con->prepare($sql);
$stmt->bindParam(':1', $this->getPes_cdpessoa(), PDO::PARAM_NULL);
$stmt->bindParam(":2", $this->getPdf_nupessoa_def(), PDO::PARAM_NULL);

另见,见:

答案 1 :(得分:2)

bindParam需要传递一个实际变量,因为它会创建一个引用。因此,当你的函数返回null时,bindParam实际上没有任何有效的东西。

您需要使用bindValue代替。请注意,bindValue将立即使用您传递给它的任何值,其中bindParam等待语句执行以实际检索要使用的值。

答案 2 :(得分:0)

Alternative语法有效:

$stmt = $con->prepare($sql);
$stmt->execute(array($this->getPes_cdpessoa(), $this->getPdf_nupessoa_def()));