2009-07-17 56 views
1

我有一個查詢寫成mysql_errno和mysql_error始終報告東西

mysql_query($query,$conn) 
    or 
    die(
    "A MySQL error has occurred.<br />Your Query: " . $query . "<br /> Error: (" . mysql_errno() . ") " . mysql_error()); 
    echo "You have been entered into our Database!"; 

此輸出

A MySQL error has occurred. 
Your Query: INSERT INTO users (uid, twname, privacy) VALUES (15400743, 'gdhdh', 'accepted') 
Error: (0) 

所以它沒有列出任何錯誤或任何東西。當我複製/粘貼該查詢到的phpMyAdmin的SQL選項卡,它成功運行,並DB連接不拋出什麼壞事(我知道它的工作原理,因爲查詢的作品以及其他地方):

function get_db_conn() { 
$conn = mysql_connect($GLOBALS['db_ip'], $GLOBALS['db_user'], $GLOBALS['db_pass']); 
mysql_select_db($GLOBALS['db_name'], $conn); 
return $conn; 

}

關於我能解決什麼的想法?我真的很感激它。

+0

你使用哪個版本的php?哪個OS?你是如何安裝php的?從源頭編譯 - 如果是的話,如何?來自xyz的二進制包?這是否總是發生,使用任何sql語句(SELECT,INSERT,UPDATE)? – VolkerK 2009-07-17 07:40:11

+0

Linux 5上的PHP 5。安裝在主機 – 2009-07-17 12:18:39

+0

[**請不要在新代碼中使用`mysql_ *`函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – TRiG 2014-03-02 20:19:59

回答

2

錯誤0意味着沒有錯誤發生。

因此,如果在沒有錯誤發生時輸出錯誤的代碼正在運行,那麼在代碼中圍繞對mysql_query()函數的調用發生邏輯錯誤。

從代碼中很難判斷哪些應該在不同的條件下運行,哪些地方可能存在錯誤。

以下代碼在邏輯上等同於您嘗試實現的功能,並應按預期工作。

該代碼更清楚地區分調用mysql_query()函數來檢查調用函數的結果。我也對代碼進行了一些格式化,使其不顯示任何水平滾動,儘管這純粹是可選的。

$queryResult = mysql_query($query, $conn); 
if ($queryResult === false) { 
    $errorMessage = "A MySQL error has occurred.<br />" 
        . "Your Query: ".$query."<br />" 
        . " Error: (".mysql_errno().") ".mysql_error(); 

    die($errorMessage); 
} 
0

我不確定這是否正是您要查找的內容,但函數的參數稱爲$ query,並且您的錯誤中的變量爲$ your_query,因此$ your_query的值顯示在錯誤,但是誰知道$ query中的內容,所以如果它是NULL,那麼可能會導致錯誤號爲0而沒有消息。