[英]Find out if the column supports “Null” values in mysqli
我有100個表格的mysql數據庫。 有些列允許使用空值,有些則不允許。 我在php mysqli中將數據動態插入表中。 我正在使用以下代碼插入任何空值:
$value = ($value == "") ? null : $value;
但是,這樣做的問題是我得到Column 'XXX' cannot be null
錯誤。 如何確定列是否支持Null值?
請幫忙。
您可以通過數據庫information_schema
獲得所需的有關數據庫結構的所有信息,就像這樣(您需要IS_NULLABLE
列):
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'
參考: http : //dev.mysql.com/doc/refman/5.0/en/columns-table.html
在數據庫中,為IS NOT NULL的字段設置DEFAULT值“”(空字符串)。 因此,如果您插入NULL值,MySQL將用默認的“”代替它。
要么
SHOW COLUMNS FOR `table_name`;
查看名為Null
字段
您可以從information_schema
數據庫( IS_NULLABLE字段)中獲取此信息-
SELECT
TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, IS_NULLABLE
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name'; -- specify your filter
您可以運行以下查詢:
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
如果您有權訪問表information_schema
,則可以執行以下操作:
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列,以防以后有人找到該答案)
我根本不會盲目地將空字符串轉換為mysql NULL。
這實際上是2個不同的值,每個值都有其獨特的功能-因此,交換它們可能會導致不可預測的結果。
將PHP的NOLL交易為Mysql的NULL也是如此。 它們也可能具有不同的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.