php - INSERT 语句给了我 '' 空字符串,但它似乎需要为空
问题描述
好的,我在 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;
}
}
解决方案
让我们考虑一下function
:
function handle($input) {
return ((!$input) && ($input !== '')) ? "null" : $input;
}
调用它function
会产生你喜欢的值。
推荐阅读
- html - 如何删除两个单词之间的大空间以证明移动设备中的对齐?
- ibeacon - 使用 Apple Wallet 当 iBeacon 触手可及时的自定义操作
- extjs - Extjs 5.0.1:当我们将边框半径赋予网格或其任何父级时,在滚动时获取网格中的空白
- c# - 如何从通用列表转换
加倍[]? - c# - mod_security (Apache) 来自 C# 中的 multipart/form-data 请求
- java - 如何在jway java json解析器中将所有json路径键转换为大写字母?
- python - “TypeError:'模块'对象不可调用”与 webdriver.chrome
- c# - MSB4020:元素中“项目”属性的值“”
是无效的 - javascript - 如何将数据添加到firestore数据库子集合中的特定文档?
- dotnetnuke-9 - 如何在 DotNetNuke 9 中使用 crud 功能创建和安装 mvc 模块