簡體   English   中英

MySQL查詢有效,但在PHP中不起作用

[英]MySQL Query works but not within 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

可能是什么問題呢?

對於初學者,在mysql_query之后進行一些錯誤檢查:

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

始終編​​寫PHP代碼以檢查mysql_query()的返回值(或mysqli或PDO中的等效函數)。 如果有錯誤,它將返回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連接時,即使您在直接查詢客戶端中進行連接時,也可能沒有讀取該表所需的特權。

在我的系統上,最好對所有字段/表名稱進行反選,並單引號變量。

添加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>";

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

正如其他人所提到的,請查看其他數據庫驅動程序替代方案(mysqli或PDO)

嘗試這個

$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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM