0

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

电子邮件地址和电话号码不包含在以下表格中。

电子邮件地址和电话号码不包含在内

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

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;
        }
    }
4

2 回答 2

2
  • 如果用户不填写这些字段,则不是 NULLS 而是空字符串将被放入查询中。
  • 从而导致语法错误,这Values('', '', '', , )是一个肯定的错误。
  • 您正在使用准备错误的方式。
  • 你没有设置 mysqli 错误报告

在 mysqli_connect 之前添加此行

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

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

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

于 2013-09-07T15:05:22.027 回答
0

当使用准备好的语句时,您不会将值放入您提供的查询中,而是提供占位符并绑定参数。

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

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

于 2013-09-07T14:53:08.137 回答