将NULL值传递给mysql存储过程

时间:2010-04-28 14:22:08

标签: php

我试图将一些NULL值传递给stroed过程但是PHP总是将变量保留为空字符串''而不是NULL。

我的数据库插入功能如下所示。 (我正在使用Framework和ADODB,如果看起来很奇怪那就是为什么)。

function insert_emp($f_name, $last_name, $dob) {

   if(!isset($dob)){
      $dob = NULL;
   }

   $this->DB->setConnection("CALL insert_emp('$f_name', '$l_name', '$dob')");
}

我确保$ dob传递空字符串''。但由于某种原因,当它调用存储过程时,它不会更改为NULL。 dob是一个datetime字段,mysql抱怨你不能输入空字符串作为DATETIME。如果我硬编码插入这样的

 $this->DB->setConnection("CALL insert_emp('Test1', 'Test2', 'NULL')"); 

它会起作用。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

NULL不能表示为字符串。所以你应该使用字符串文字null。

function insert_emp($f_name, $last_name, $dob = 'NULL') {
   $this->DB->setConnection("CALL insert_emp('$f_name', '$l_name', '$dob')");
}

我已将其设置为默认值,并且它应该首先执行您想要的操作。

答案 1 :(得分:0)

尝试

$this->DB->setConnection("CALL insert_emp('Test1', 'Test2', '')");
相关问题