我想简单地显示通过查询获取的值。
$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
。
可能是什么问题?
答案 0 :(得分:0)
对于初学者,在mysql_query之后进行一些错误检查:
$newresult = mysql_query($newquery);
if (!$newresult) {
die('Invalid query: ' . mysql_error());
}
答案 1 :(得分:0)
始终编写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连接时没有读取该表所需的权限,即使您在直接查询客户端中进行连接时也具有权限。
答案 2 :(得分: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>";
答案 3 :(得分:0)
它看起来可能是此代码块之前的连接/数据库选择代码。
正如其他人所提到的,请查看其他数据库驱动程序替代方案(mysqli或PDO)
答案 4 :(得分: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
}