我正在尝试这个(并且在用户发送之前处理所有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')...)每个单一参数的智能方式?
答案 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()));