php查询出错

php查询出错,php,sql,Php,Sql,我试图访问数据库中的两个表,一个是代理,另一个是属性。当我单击上一页上的链接时,它会将我带到地址栏中的id。我不明白为什么一直收到这样的错误消息:警告:mysql\u numrows希望参数1是resource,布尔值在第16行的C:\wamp\www\practice\details.php中给出 我已经有了这个代码: $query ="SELECT * FROM properties WHERE id = '$id'"; $result=mysql_query($query); $num=m

我试图访问数据库中的两个表,一个是代理,另一个是属性。当我单击上一页上的链接时,它会将我带到地址栏中的id。我不明白为什么一直收到这样的错误消息:警告:mysql\u numrows希望参数1是resource,布尔值在第16行的C:\wamp\www\practice\details.php中给出

我已经有了这个代码:

$query ="SELECT * FROM properties WHERE id = '$id'";
$result=mysql_query($query);
$num=mysql_numrows($result);

您的查询可能出现错误,因此$agentResult的结果为false。因此,错误消息表示布尔给定

试着用if语句拥抱你的mysql\u numrows:

$agentResult=mysql_query($agentQuery);

if ($agentResult)
{
    $agentNum=mysql_numrows($agentResult);
}
else
{
    echo mysql_error(); // To show the query error
}
$agentResult=mysql_query(
  "SELECT * FROM agents WHERE agentId='SELECT agentId FROM properties WHERE id='$id''"
);

让我们将查询代码压缩为一条语句:

$agentResult=mysql_query($agentQuery);

if ($agentResult)
{
    $agentNum=mysql_numrows($agentResult);
}
else
{
    echo mysql_error(); // To show the query error
}
$agentResult=mysql_query(
  "SELECT * FROM agents WHERE agentId='SELECT agentId FROM properties WHERE id='$id''"
);
这不是一个有效的查询

再加上您没有实际检查mysql_查询的返回值以查看它是否成功,并且您有您提供的错误

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);
}
或者使用以下方法简化查询:

SELECT a.*
FROM agents a INNER JOIN properties p
  ON a.agentID = p.agentId
WHERE p.id = $id
假设$id=,这个

决议如下:

$agentQuery ="SELECT * FROM agents WHERE agentId='SELECT agentId FROM properties WHERE id='<someid>''";

…无法执行。

永远不要假设mysql\u查询成功。您应该始终检查以确保查询有效。如果$agentResult==FALSE{diemysql_error;}您能写一个更好、更具描述性的标题吗?这与phpmyadmin有什么关系?$agent的值是多少?您不应该再使用mysql_*函数了。它们被标记为已弃用。改为使用PDO或mysqli_*。@Jessicam93:然后首先获取ID并将其传递给第二个查询,或者使用子查询:从agentId=$agent的代理中选择*。实际上,更好的方法是使用连接:选择代理。*从代理连接代理上的属性。agentId=properties.agentId,其中properties.id='$id'。