从MySQL中检索值

时间:2010-08-20 17:50:37

标签: php mysql

我有一个非常简单的表,其中包含“受害者”列表以及该类型的相应数量。我正在尝试使用以下代码创建此信息的输出页面:

foreach( $victims as $vic )
{
   $hits = mysql_query("SELECT amount
                          FROM victims
                         WHERE victim = ".$vic );

   echo $hits;

   print "$vic: $hits <br /><hr>";
}

然而,hits是空的。我的SQL查询出了什么问题?

3 个答案:

答案 0 :(得分:1)

foreach($victims as $vic)
{
   $hits = mysql_query('SELECT amount
                        FROM victims
                        WHERE victim = "' . mysql_real_escape_string($vic) . '"');

   if($hits && mysql_num_rows($hits)>0) {
        while($row = mysql_fetch_array($hits)) {
               echo '<p>' . $row['amount'] . ' hits</p>';
        }
   } else {
        echo '<p>' . mysql_error() . '</p>';
   }
}

答案 1 :(得分:0)

mysql_query()不会返回查询的实际结果,而是返回resource,然后您可以使用该结果访问结果。

这是一种典型的模式:

$result = mysql_query(...);
$row = mysql_fetch_assoc($result);
print($row['amount']);

每次调用mysql_fetch_assoc都会返回结果集的下一行。如果您希望返回多行,可以在while循环中调用它:

$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
    print($row['amount']);
}

答案 2 :(得分:0)

由于在任何答案中都没有明智的错误检查,我会将整个事情放在这里:

foreach( $victims as $vic )
{
   $sql = "SELECT amount
               FROM victims
               WHERE victim = '".mysql_real_escape_string($vic)."'";
   $result = mysql_query($sql);
   $result or die('Query Error: '.mysql_error() . ' - ' . $sql);

   $hitsarray = mysql_fetch_assoc($result);
   if ($hitsarray) {
       $hits = $hitsarray['amount'];
   } else {
       // No row was found
       $hits = 0;
   }

   echo $hits;

   print "$vic: $hits <br /><hr>";
}

哦,这解决了导致问题的查询错误。请注意在字符串中包含$vic变量的引号,以及字符串的正确转义...