假设我的表只有这些成员 - id(键)和日期(默认为 NULL)。 现在,当我想用我的 php 插入一行时,我是否需要在查询之前检查日期是否有值,或者我是否可以像这样插入 -
$query = "INSERT INTO mytable VALUES(3,{$_GET['date]})"
mysql 会为 date 分配一个 NULL 值吗?
无论表格有多大,这都适用吗?
例如:我可以将许多来自 php 且可能为空(或 null)的值插入到表中吗,mysql 会自动将 NULL 分配给它们(如果我默认将它们定义为 NULL 当然)或者我是否需要在插入之前进行各种检查?
最佳答案
不,它将分配通过参数 $_GET['date']
传递的值。如果值为空 ''
并且日期的数据类型为 varchar
,它将插入一个 ''
值,该值不同于 >NULL
然后它会插入一个空的。那是因为 NULL
和空字符串不相等。它们在 SQL 中是两个不同的东西。
如果要插入NULL
值,要么在插入列列表中忽略此列,然后它会被赋予默认值NULL
。或者将其显式写入 INSERT
语句的值中。
请注意:您以这种方式编写的代码容易受到 SQL injection 的攻击.您应该改用准备好的语句或 PDO。有关更多详细信息,请参见:
关于php - MYSQL 和 PHP INSERT NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13284414/