2015-10-18 95 views
-1

將新行插入到表中時出現了一些奇怪的SQL問題。我將一些列設置爲NULL,就像我在數據庫中的另一個表一樣。顯然,當插入時沒有數據傳遞時,它應該在記錄中輸入NULL,但是現在不是。SQL NULL插入不起作用

我已經檢查了所有設置與我的其他表(它正確插入記錄爲NULL),但無法找到問題。這兩列顯示如下,在兩個表中。

`statement_1` varchar(255) DEFAULT NULL, 

沒有數據被粘貼(所以不是空白空間問題)。任何人都可以提出爲什麼一張桌子按預期行事,但另一張桌子不是?

使用下面的INSERT語句

$statement_a = "INSERT INTO statements (ucsid, statement_1, statement_2, statement_3, statement_4, statement_5, statement_6, statement_7, statement_8, statement_9, statement_10) VALUES (:ucsid, :statement_1, :statement_2, :statement_3, :statement_4, :statement_5, :statement_6, :statement_7, :statement_8, :statement_9, :statement_10)"; 
    $q_a = $this->db_connection->prepare($statement_a); 
    $q_a->execute(array(':ucsid'=>$ucsid, 
         ':statement_1'=>$statement_1, 
         ':statement_2'=>$statement_2, 
         ':statement_3'=>$statement_3, 
         ':statement_4'=>$statement_4, 
         ':statement_5'=>$statement_5, 
         ':statement_6'=>$statement_6, 
         ':statement_7'=>$statement_7, 
         ':statement_8'=>$statement_8, 
         ':statement_9'=>$statement_9, 
         ':statement_10'=>$statement_10)); 
+0

您需要提供更多信息才能爲您提供幫助。什麼是錯誤信息?你如何得到錯誤信息?您是從編程語言執行SQL語句還是直接執行數據庫?哪個SQL語句正在執行? –

+0

什麼是插入而不是null? –

+0

@MarcoAurélioDeleu沒有錯誤消息,因爲其餘條目正在成功插入,只是當記錄爲空時,不會添加NULL值。我正在使用PHP,但是這是通過PHP插入和通過phpMyAdmin接口插入發生的。 –

回答

0

我已經通過確保NULL是通過函數傳遞,如果沒有已插入通過使用下面的代碼

固定的問題

if($_POST['statement_1'] == '') { $statement_1 = NULL; } else { $statement_1 = $_POST['statement_1']; }

-1

這裏由varriable $statement_1傳遞的值將是""

嘗試此查詢SELECT * FROM my_table WHERE statement_1 =""。你會得到行。

這意味着你正在給$ statement_1分配一些值,否則它應該爲空。 檢查您的代碼。希望這有助於

+0

我們已經知道了。我們如何解決這個問題? –

+0

要麼你不應該通過$ statement_1或分配$ statement_1 = null(默認值)。兩者都能正常工作嗎? –

0

,因爲我新我不能添加評論:

使用NOT phpMyAdmin的嘗試一個簡單的INSERT語句。嘗試

http://www.heidisql.com/ OR https://www.mysql.com/products/workbench/

  1. INSERT INTO語句(ucsid)VALUES(123)
  2. INSERT INTO語句(ucsid,statement_1)VALUES(123,NULL)

在這兩種情況下, statement_1應該是NULL。你的情況最可能不是。但是,這將告訴問題在於數據庫表,而不是使用php或您正在使用的php執行方法。

另外是statement_1字段定義爲NOT NULL,默認設置爲NULL?這不可能發生。

嘗試重新創建沒有記錄的新數據庫和新表,並嘗試將NULL作爲值插入測試。

您也可以發表您的數據庫和表字符集和校對的SQL

+0

使用HeidiSQL將數據正確插入,並添加空值,因爲它們應該是。這是否意味着錯誤來自腳本內的某個地方? 請參閱sql:http://pastebin.com/nhp6nu24 –