2010-02-04 122 views
2

我有一個奇怪的錯誤,我調用插入查詢,它執行成功(行出現在數據庫中),但mysql_query返回false。它只在特定字段包含下劃線或破折號(或可能是其他一些字符,但這些是我迄今爲止所遇到的兩個字符)時才返回false。mysql_query在PHP中成功執行查詢後返回false

"INSERT INTO Hoopoes (name, owner, dbuser, dbpass, package) VALUES " 
         ."('".$this->config['hname']."', '".$this->config['email']."','".$db_prefix.$db_username."','$db_userpass'," 
         ."'".$this->config['package']."')" 

所以這是查詢。它在config['hname']包含_-時失敗。我不明白爲什麼。該行出現在數據庫中,但mysql_query仍然返回false。任何有識之士將不勝感激

+0

您正在使用哪種驅動程序? – 2010-02-04 23:47:55

+0

http://en.wikipedia.org/wiki/SQL_injection – hobodave 2010-02-04 23:48:44

+3

你檢查了mysql_error()後返回false看看是否提供線索? – 2010-02-04 23:50:02

回答

1

您每畝選擇數據庫連接後,任何查詢之前:

// Connect... 
mysql_connect("server", "user", "pass"); 
// ...and select the database! 
mysql_select_db("database"); 

// Now you're good to go. :) 

當您指定的模式,這樣你可以用你的INSERT查詢,而不選擇一個數據庫:

mysql_query("INSERT INTO `database`.`table` VALUES (...); 
+0

雅,我之前在腳本中選擇了它。這不是第一次進行數據庫調用。從數據庫中取出配置數組,並在此之前做出其他一些查詢。無論哪種方式,我在查詢的正上方拋出了一個冗餘的mysql_select_db,並且似乎關閉了它。感謝您的迴應! – wallacer 2010-02-05 00:10:45

0

嗯..這是一個奇怪的。查詢工作併成功插入,顯然沒有選擇數據庫。我直接在查詢上添加了一個mysql_select_db調用,現在它的工作原理相同,但查詢返回true。

奇怪

感謝您的幫助!

2

檢查mysql_error()返回的結果是很好的。 在我的情況下,它是'表database_name.table_name不存在'。這給了我一個線索,第二次檢查後,我意識到我已經在另一個數據庫的database_name中創建了PHPMyAdmin中的table_name:P