0

我想简单地显示通过查询获取的值。

$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中运行它,它会正确返回fullname对应的user_id=3

可能是什么问题呢?

4

5 回答 5

0

对于初学者,在 mysql_query 之后进行一些错误检查:

$newresult = mysql_query($newquery);
if (!$newresult) {
   die('Invalid query: ' . mysql_error());
}
于 2013-06-24T20:32:51.173 回答
0

mysql_query()始终编​​写 PHP 代码来检查(或 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 连接时,您可能没有读取该表所需的权限,即使您在直接查询客户端中连接时确实有权限。

于 2013-06-24T20:33:02.263 回答
0

On my system, it works best to backtick all field/table names and to single-quote variables.

The addition of mysql_error() should also help you identify the error.

Note change to query text.

Try this:

$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>";
于 2013-06-24T20:35:26.153 回答
0

它看起来很可能是此代码块之前的连接/数据库选择代码。

正如其他人所提到的,请查看其他数据库驱动程序替代方案(mysqli 或 PDO)

于 2013-06-24T20:43:45.243 回答
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
}
于 2013-06-24T20:44:31.687 回答