簡體   English   中英

找出列是否在mysqli中支持“ Null”值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM