在移动到一台新的计算机(和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)上却没有。所以我的问题是:有没有比我提出的更好的解决方案?如果是,那是什么?最受欢迎和赞赏的建议(如果有助于解决这个恼人的问题,甚至可以嘲笑。)
1条答案
按热度按时间snz8szmq1#
这很可能是因为mysql更新(在我看来是5.6到5.7)。您应该传递一个整数,或者
NULL
,而不是空字符串。通过
NULL
,或者当id自动递增时,不要在查询中提及该字段。如果不想为每个模型显式定义null,可以尝试编写一些中间件;例如。
IF field IS id THEN skip field OR use null value
(伪代码ofc)