【发布时间】:2019-09-19 22:37:57
【问题描述】:
好的,我在 php 中有这个类对象,其中创建了 INSERT 语句,因此它不会为 ID 提供值,因为这意味着当它被传递到数据库时简单地自动递增。以前可以用,现在不行了。事实上,它仍然适用于我的实时服务器,但不适用于我的本地主机开发环境。我的sql出来的时候是这样的:
INSERT INTO sessions (u_sess, user_id, school_id, teacher_id, test_id, holder_id, visible, date_created, last_updated) VALUES ('', '1', '1', '', '', '', '', '2019-09-19 22:18:58', '2019-09-19 22:18:58')Database query failed.
当我将它粘贴到我的 phpMyAdmin 的 SQL 窗口中时,它会给我关于问题的更详细的反馈:
1366 - 不正确的整数值:第 1 行的列 'u_sess' 的 ''
所以,我更改了我的 INSERT 语句,使其看起来在第一个位置有一个 NULL,并且将错误向下滚动到下一个 '' 空字符串。所以,我猜测错误来自这样一个事实,即我的 php 对象正在生成一个包含空字符串的 INSERT 语句,而不是所有未知值的 NULL。我不知道如何正确修改我的 php 对象以使其识别并将每个 '' 重新定义为 NULL。我确信这会解决它,因为当我将所有空字符串都更改为 NULL 时……东西最终会正确插入。
这是我的 CREATE 方法:
global $database;
$attributes = $this->sanitized_attributes();
$sql = "INSERT INTO ".self::$table_name." (";
$sql .= join(", ", array_keys($attributes));
$sql .= ") VALUES ('";
$sql .= join("', '", array_values($attributes));
$sql .= "')";
echo $sql;
if($database->query($sql)) {
$this->u_sess = $database->insert_id();
return true;
} else {
return false;
}
}
【问题讨论】: