php - MYSQL 和 PHP INSERT NULL 值

标签 php mysql

假设我的表只有这些成员 - 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/

相关文章:

php - 如何使我的三表 sql 连接工作?

php - 从 PHP 数组中删除相似的元素

php - 在 PHP 中处理数据库错误

mysql - 过滤当前日期的记录

mysql - 在庞大的数据集上使用 IN 是个好主意吗?

php - 连接两个 MySQL 查询

php - 我如何重组此代码以使其仅显示一列的结果?

php - 如何在 PHP 中发出内存使用警告?

Python DELETE mysql/mariadb 与 python 变量不起作用

javascript - Node.js 服务器循环中的 SQL 查询