我试图将一些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')");
它会起作用。谢谢你的帮助。
答案 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', '')");