【问题标题】:Passing NULL values into mysql Stored procedure将 NULL 值传递给 mysql 存储过程
【发布时间】:2011-02-13 09:21:27
【问题描述】:

我正在尝试将一些 NULL 值传递给 stroed 过程,但 PHP 始终将变量保留为空字符串 '' 而不是 NULL。

我的数据库插入函数如下所示。 (我使用的是框架和 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 是一个日期时间字段,mysql 抱怨你不能输入一个空字符串作为日期时间。如果我对这样的插入进行硬编码

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

它会起作用的。感谢您的帮助。

【问题讨论】:

    标签: php


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      试试这个

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        相关资源
        最近更新 更多