2013-06-24 76 views
0

我想簡單地顯示通過查詢獲取的值。MySQL查詢有效,但不在PHP中

$newquery = "SELECT fullname FROM `users` WHERE user_id=" . $row['usernumber']; 
$newresult=mysql_query($newquery); 
$newrow = mysql_fetch_row($newresult); 
echo "<td>" . $newrow[0]. "</td>"; 

(其中$row['usernumber']是從以前的查詢獲取)

我得到這個錯誤:

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /a/b/viewall.php on line 41 

這我相信,這意味着我的查詢是由於某種原因失敗。

在這裏,如果我echo $newquery;我得到

SELECT fullname FROM `users` WHERE user_id=3 

如果我在mysql中運行這個分開,它返回對應user_id=3fullname正常。

可能是什麼問題?

+1

您的代碼已被棄用,點擊這裏:http://php.net/ manual/en/function.mysql-query.php – Sergio

+1

用此查詢添加「或die(mysql_error())」newresult = mysql_query($ newquery); – Fallen

+1

['mysql_error()'](http://us3.php.net/mysql_error)yield? – Wiseguy

回答

0

對於初學者來說,把一些錯誤的mysql_query後檢查:

$newresult = mysql_query($newquery); 
if (!$newresult) { 
    die('Invalid query: ' . mysql_error()); 
} 
0

總是寫PHP代碼來檢查(在庫MySQLi或PDO或同等功能)的mysql_query()返回值。如果有錯誤,它將返回false。這就是爲什麼你會得到你所做的錯誤,因爲$ newresult是false - 不是合法的查詢資源。

如果mysql_query()返回false,則應該報告錯誤消息並找出錯誤。

$newquery = "SELECT fullname FROM `users` WHERE user_id=" . $row['usernumber']; 
$newresult=mysql_query($newquery); 
if ($newresult === false) { die(mysql_error()); } 
$newrow = mysql_fetch_row($newresult); 

例如,其他錯誤是可能的,而不是語法錯誤。即使您在使用直接查詢客戶端進行連接時擁有特權,也許您沒有從PHP連接時讀取該表所需的權限。

0

在我的系統上,它最適合反向選擇所有字段/表名和單引號變量。

此外,mysql_error()也應該幫助您識別錯誤。

注意更改爲查詢文本。

試試這個:

$un = $row['usernumber']; 

$newquery = "SELECT `fullname` FROM `users` WHERE `user_id`= '$un'"; 
$newresult=mysql_query($newquery) or die(mysql_error()); 
$newrow = mysql_fetch_row($newresult); 
echo "<td>" . $newrow[0]. "</td>"; 
+0

只有當使用否則無效的字段/表名稱(例如'some-thing')或保留字時才需要反引號。他們不必到處使用。 –

0

它看起來可能是連接/數據庫選擇代碼中此代碼塊。

正如其他人所說,請尋求其他數據庫驅動的替代品(庫MySQLi或PDO)

0

試試這個

$newquery = sprintf("SELECT fullname FROM `users` WHERE user_id=%d " ,$row['usernumber']); 
$result = mysql_query($newquery); 
if (!$result) 
{ 
    die('Invalid query: ' . mysql_error()); 
} 
else 
{ 
    //do something 
} 
相關問題