|
|
1
47
MySQL
做
允许
我正在使用此版本:
编辑1:我在您的编辑中看到,您在php中收到的错误消息表明您正在传递一个空字符串(即
编辑2:您使用PDO吗?如果是,绑定空参数时,请确保使用
|
|
|
2
20
这是一个明智的观点。 空日期不是零日期。它们看起来可能相同,但不是。在MySQL中,空日期值为空。零日期值是空字符串(“”) 和 '0000-00-00 00 00:00:00'
在无效日期“…其中mydate=''将失败。
但现在让我们来做个有趣的事情。在MySQL日期中,空/零日期完全相同。 举例来说 select if(myDate is null, 'null', myDate) as mydate from myTable where myDate = ''; select if(myDate is null, 'null', myDate) as mydate from myTable where myDate = '0000-00-00 00:00:00' 将同时输出:“0000-00-00 00:00:00”。如果将mydate更新为“”或“0000-00-00 00:00:00”,两个选项的工作方式都将相同。 在PHP中,mysql空日期类型将与标准的mysql连接器一起使用,并且为真正的空值($var==null,is_null($var))。空日期将始终表示为“0000-00-00 00:00:00”。 我强烈建议只使用空日期,如果可以,也只使用空日期。(有些系统将使用“虚拟”零日期,这是有效的公历日期,如1970-01-01(Linux)或0001-01-01(Oracle)。 在php/mysql中,空日期更容易。您没有要处理的“Where字段为空”。但是,您必须“手动”转换“”中的“0000-00-00 00:00:00”日期以显示空字段。(存储或搜索您没有处理零日期的特殊情况,这很好)。 空日期需要更好的照顾。插入或更新时必须小心,不要在空值周围添加引号,否则将插入零日期而不是空值,这会导致标准数据的混乱。在搜索表单中,您需要处理“和mydate不为空”等情况。 空日期通常比较有用。但是他们很多 多 查询的日期快于零。 |
|
|
3
5
我在窗户上遇到了这个问题。 这就是解决方案: 若要为空传递“”,应禁用 STRICT_MODE (在Windows安装上默认启用) 顺便说一句,传递“”为空是很有趣的。我不知道他们为什么让这种行为发生。 |
|
|
4
3
这取决于你如何申报你的桌子。在以下位置不允许空值:
但允许出现以下情况:
第二个是默认值,因此必须有人主动决定该列不应为空。 |
|
|
5
2
我刚在MySQLv5.0.6中测试过,datetime列接受了空值,没有问题。 |
|
|
6
2
值得一提的是:我在尝试通过Perl更新mysql表时遇到了类似的问题。当将空字符串值(从另一个平台的读取值转换为空值)传递到日期列(“下面代码示例中的dtcol”)时,更新将失败。我最终通过使用嵌入在更新语句中的if语句成功地更新了数据:
|
|
|
7
2
我刚刚发现,如果字段的默认值为空,MySQL将采用空值,并且我会编写特定的if语句,并去掉引号。这也适用于更新。
|
|
|
8
1
具体来说,对于MySQL中可以为空的字段,在PHP中不能这样做:
因为php中的空字符串等于 不 与MySQL中的空值相同。相反,您希望这样做:
当然,您不必使用is_null,但我认为它可以更好地演示这一点。使用empty()或类似的方法可能更安全。如果$col2恰好是一个字符串,您可以在查询中用双引号括起来,不要忘记 不 包括“空”字符串周围的那些,否则它将不起作用。 希望有帮助! |
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |