2013-07-22 78 views
0

有沒有人看到這個INSERT語句有什麼問題?這在PHP代碼中使用時失敗了。我使用MySql 5.6。 dept_id是主鍵。我沒有看到任何語法錯誤,但它失敗了。任何幫助都是極好的!MYSQL插入失敗 - 語法正確嗎?

$add_sql = @mysql_query("INSERT INTO `vf_department` (`dept_id`,`descr`,`sub_dept`)VALUES('','$new_desc','$new_sub')") or die("Can not add item."); 
+4

是的,我看到錯誤的第一件事情是,你正在使用'@'前綴壓制錯誤。如果查詢失敗並且您不知道爲什麼,那麼能夠看到錯誤消息是您的第一步。 – David

+1

主鍵不能爲空 – Scotch

+4

1)不要用'@'來壓制錯誤信息。 2)爲什麼不使用'或者死亡(mysql_error())'來查看錯誤消息是什麼,而不是默認的消息,它不會告訴你任何有用的信息。 3)你的實際錯誤可能是因爲你正在向主鍵添加一個空字符串 – andrewsi

回答

1

是你的主鍵自動增量嗎?如果是這樣,你不需要把它作爲插入語句的一部分。

+0

或者,在INSERT語句中保留AUTO_INCREMENT列,並將VALUES子句中的關鍵字NULL指定爲要分配給列的值。 – spencer7593

+0

感謝所有的答案傢伙!大部分答案都是部分正確的,並讓我在需要的地方。非常感謝!!!!! –

0

我同意ebizzity ...如果一列是一個自動增量,離開插入命令,MySQL會爲你生成。至於所有其他評論,我很驚訝沒有人提到你接觸SQL注入。

如果您的$ new_desc和/或$ new_sub的值包含單引號,那將會抵消您的命令的平衡並使其窒息......更不用說會在sql注入時發生。查看清理傳入的數據並將您的呼叫參數化。

0

試試這個

$add_sql = mysql_query("INSERT INTO `vf_department` (`descr`,`sub_dept`) 
      VALUES('$new_desc','$new_sub')") or die(mysql_error());