Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 找出该列是否支持;空";mysqli中的值_Php_Mysql_Insert_Mysqli - Fatal编程技术网

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

我有一个包含100个表的mysql数据库。有些列允许空值,有些不允许。 我在php mysqli中动态地将数据插入表中。我使用以下代码插入任何空值:

$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'