php mysql无法再插入(第1行“id”列的整数值“”不正确)

alen0pnh  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(397)

在移动到一台新的计算机(和mac的mojave)之后,我无法使用类和对象从php文件在数据库中插入行。这样地:

$new_entry = SomeClassName::add_record($foo, $bar );  
if($new_entry && $new_entry->save()) {  
    //do something here  
}

类定义如下所示:

class SomeClassName extends DBObject {
    protected static $table_name="some_table";
    protected static $db_fields = array( 'id' , 'foo' , 'bar' );
    public $id;
    public $foo;
    public $bar;
    public $errors=array();
}
``` `mysqli_error()` 给了我:

Incorrect integer value: '' for column 'id' at row 1

我发现如果我把id从 `$db_fields` 数组并删除行 `public $id;` . 但是,我有几十个类,我担心必须为此重新编辑所有这些类——特别是因为我的所有代码在旧的本地服务器(使用php5.4)上运行良好,在公共服务器(使用php5.5)上仍然运行良好,但在新设置(使用php7)上却没有。所以我的问题是:有没有比我提出的更好的解决方案?如果是,那是什么?最受欢迎和赞赏的建议(如果有助于解决这个恼人的问题,甚至可以嘲笑。)
snz8szmq

snz8szmq1#

这很可能是因为mysql更新(在我看来是5.6到5.7)。您应该传递一个整数,或者 NULL ,而不是空字符串。
通过 NULL ,或者当id自动递增时,不要在查询中提及该字段。
如果不想为每个模型显式定义null,可以尝试编写一些中间件;例如。 IF field IS id THEN skip field OR use null value (伪代码ofc)

相关问题