我在做这个查询。它没有向我显示$ product中的结果。
代码:
$sql = "SELECT s*
FROM Client_agent_approvals caa
INNER JOIN Subscriptions s ON s.client_id = caa.client_id
WHERE caa.agent_id = '$id'
AND s.agent_id <> '$id'";
$result = mysql_query($sql);
$query = mysql_query($sql) or die("Error: " . mysql_error());
if ($result == "") {
echo "";
}
echo "";
$rows = mysql_num_rows($result);
if ($rows == 0) {
print("");
} elseif ($rows > 0) {
while ($row = mysql_fetch_array($query)) {
$product = $row['product'];
print("Products they have are: $product");
}
}
答案 0 :(得分:1)
你有s*
。我想你的意思是s.*
。您还应该使用do ... while进行查询迭代:
$row = mysql_fetch_array($query);
if(!$row)
{
print('no rows');// a more useful message
}
else
{
do {
$product = $row['product'];
print("Products they have are: $product");
}
while($row = mysql_fetch_array($query));
}
mysql_num_rows
实际上计算了返回的所有值,但事实并非如此。你几乎可以说它为同样的结果做了两倍的工作。
当然,所有这些都假设有一行或多行返回。你可以直接在MySQL中运行它来确认你应该得到什么吗?
答案 1 :(得分:1)
如果您在刚刚发布的评论之后编辑了代码,那么“缩进”并不意味着什么。你可以缩进循环中的语句,如果是为了使它更具可读性。
尝试在$ rows和$ row上使用print_r,然后再对它们执行任何操作。它可以帮助您了解这些变量的变化。 http://php.net/manual/en/function.print-r.php