Php 找出该列是否支持;空";mysqli中的值
我有一个包含100个表的mysql数据库。有些列允许空值,有些不允许。 我在php mysqli中动态地将数据插入表中。我使用以下代码插入任何空值:Php 找出该列是否支持;空";mysqli中的值,php,mysql,insert,mysqli,Php,Mysql,Insert,Mysqli,我有一个包含100个表的mysql数据库。有些列允许空值,有些不允许。 我在php mysqli中动态地将数据插入表中。我使用以下代码插入任何空值: $value=($value==“”)吗?null:$value 但是,问题是我得到列“XXX”不能为null的错误。如何确定列是否支持空值 请提供帮助。在数据库中为不为空的字段设置默认值“”(空字符串)。因此,如果插入空值,MySQL将用默认值“”替换它 或 查看名为Null的字段,您可以从information\u schema数据库(可为Nu
$value=($value==“”)吗?null:$value代码>
但是,问题是我得到列“XXX”不能为null的错误。如何确定列是否支持空值
请提供帮助。在数据库中为不为空的字段设置默认值“”(空字符串)。因此,如果插入空值,MySQL将用默认值“”替换它
或
查看名为Null
的字段,您可以从information\u schema
数据库(可为Null字段)获取此信息-
您可以运行以下查询:
SHOW COLUMNS FROM `table_name_here`
这将为您提供如下输出:
Field Type Null Key Default Extra
id int(10) unsigned NO PRI NULL auto_increment
name varchar(200) YES NULL
如果您有权访问表信息\u架构
,则可以执行以下操作:
SELECT IS_NULLABLE
FROM COLUMNS
WHERE TABLE_NAME = "table name"
AND TABLE_SCHEMA = "db_name"
AND COLUMN_NAME = "column name"
LIMIT 1
(我编辑了下面的查询,从Doug接受的答案中添加了TABLE_SCHEMA列,以防以后有人找到这个答案)您可以通过数据库信息_SCHEMA
,获得有关数据库结构的所有信息,如下图所示(您希望列可以为null
):
参考:
我根本不会盲目地将空字符串转换为mysql NULL。
这实际上是两个不同的值,每个值都有不同的特性-因此,交换它们可能会导致不可预测的结果
将PHP的NOLL转换为Mysql的NULL也是如此。它们可能也有不同的含义。您想要一个一次性解决方案,以便知道哪些列允许null,还是一个在每次插入之前可以使用的代码?最好是一个我可以在每次插入之前使用的代码。问题是,我正在将数据导入数据库,我正在编写php脚本来自动化这个过程。谢谢你。到目前为止,这似乎运作良好。干杯
Field Type Null Key Default Extra
id int(10) unsigned NO PRI NULL auto_increment
name varchar(200) YES NULL
SELECT IS_NULLABLE
FROM COLUMNS
WHERE TABLE_NAME = "table name"
AND TABLE_SCHEMA = "db_name"
AND COLUMN_NAME = "column name"
LIMIT 1
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
AND table_schema = 'db_name'
AND column_name = 'col_name'