$ mysqli->如果数据字段为空,则返回false

时间:2013-09-07 14:49:34

标签: php mysql mysqli

表单中有4个字段,其中2个字段为allow null,因此如果用户未填写这些字段,INSERT将失败,因为$mysqli->prepare将返回false。

以下表格中的电子邮件地址和电话号码不是cumpolsary。

Email address and phone number are not cumpolsary

那么,有没有办法发送空白字段并仍然插入其他填充字段的数据。

function newcontact()
    {
        $mysqli = connect();
        $query = "INSERT INTO contacts( first_name, last_name, email, phone_no, contact_by )Values( '$this->first_name', '$this->last_name',
                    '$this->email', $this->phone, $this->user_id)"; 
        //die( $query );
        $stmt = $mysqli->prepare( $query );
        if( $stmt->execute() )
        {
            $mysqli->close();
            return true;
        }
    }

2 个答案:

答案 0 :(得分:2)

  • 如果用户未填写这些字段,则不会使用NULLS,但空字符串将被置于查询中。
  • 因此导致语法错误,因为Values('', '', '', , )肯定是错误。
  • 你正在准备错误的方式。
  • 您没有mysqli错误报告集

在mysqli_connect

之前添加此行
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

并使您的查询实际使用占位符和绑定参数。

一切都会奏效。但如果没有,您将收到确切错误的通知。

答案 1 :(得分:0)

使用预准备语句时,不要将值放在查询中,而是提供placheholders而绑定参数。

http://php.net/manual/en/mysqli.prepare.php

如果要将值放在查询中,请使用函数query() http://www.php.net/manual/en/mysqli.query.php