我试图访问数据库中的两个表,一个代理和其他属性.当我点击上一页上的链接时,它会带我到地址栏中的ID.我无法理解为什么我不断收到此错误消息:警告:mysql_numrows()期望参数1是资源,布尔值在第16行的C:\ wamp\www\practice\details.php中给出
$id = $_GET['id'];
$agent ="SELECT agentId FROM properties WHERE id='$id'";
$agentQuery ="SELECT * FROM agents WHERE agentId='$agent'";
$agentResult=mysql_query($agentQuery);
$agentNum=mysql_numrows($agentResult);
Run Code Online (Sandbox Code Playgroud)
我已经有这个代码工作:
$query ="SELECT * FROM properties WHERE id = '$id'";
$result=mysql_query($query);
$num=mysql_numrows($result);
Run Code Online (Sandbox Code Playgroud)
让我们将您的查询代码压缩为单个语句:
$agentResult=mysql_query(
"SELECT * FROM agents WHERE agentId='SELECT agentId FROM properties WHERE id='$id''"
);
Run Code Online (Sandbox Code Playgroud)
这不是一个有效的查询.
将此添加到您实际上没有检查返回值mysql_query()以查看它是否成功的事实,并且您已经提供了错误.
Yadda yadda SQL注入yadda yadda mysql_*函数已弃用yadda yadda学习使用PDO或mySQLi.
忽略我刚才所说的所有事情,你的代码应该更像:
$id = $_GET['id'];
$agent_q = "SELECT agentId FROM properties WHERE id='$id' LIMIT 1";
if( ! $rs = mysql_query($agent_q) ) {
die(mysql_error());
} else if( mysql_numrows($rs) == 0 ) {
echo('no agent by that ID');
} else {
$row = mysql_fetch_assoc($rs);
$agent = $row['agentId'];
$agentQuery ="SELECT * FROM agents WHERE agentId='$agent'";
if( ! $agentResult = mysql_query($agentQuery) ) {
die(mysql_error());
}
$agentNum = mysql_numrows($agentResult);
}
Run Code Online (Sandbox Code Playgroud)
或使用以下内容简化查询:
SELECT a.*
FROM agents a INNER JOIN properties p
ON a.agentID = p.agentId
WHERE p.id = $id
Run Code Online (Sandbox Code Playgroud)