搬到新计算机(和 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
我发现,如果我从 $db_fields
数组中删除“id”并删除 public $id;
行,事情就会按预期进行。
然而,我有几十个类,我害怕必须为此重新编辑所有类 - 特别是因为我的所有代码在我的旧本地服务器(使用 php5.4)上运行良好,并且在我的公共(public)服务器上仍然运行良好(使用php 5.5),但不适用于我的新设置(使用 php7)。
所以我的问题是:是否有比我想出的解决方案更好的解决方案?如果是的话,那是什么?
非常欢迎和赞赏的建议。 (如果它有助于解决这个恼人的问题,甚至可以 mock 。)
最佳答案
这很可能是因为 MySQL 更新(对我来说像是 5.6 到 5.7)。您应该传递一个整数或NULL
,而不是空字符串。
当 ID 自动递增时,传递 NULL
,或者不在查询中提及该字段。
如果你不想为每个模型显式定义 null,你可以尝试编写一些中间件;例如IF 字段是 id THEN 跳过字段或使用空值
(伪代码 ofc)
关于php mysql 不再能够插入(错误的整数值 : '' for column 'id' at row 1 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53831232/