繁体   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