新手而循环

时间:2012-12-02 21:27:33

标签: php while-loop

当我尝试显示index.php时出现以下错误 警告:mysql_numrows()期望参数1是资源,布尔值在第18行的C:\ xampp \ htdocs \ cards \ index.php中给出

我无法判断我是否未正确连接到数据库,或者是否是其他错误。基本上我试图从我的表“卡”中显示3个随机数据行。表中要显示数据的列是“playerName”。我并不担心格式化数据。代码如下:

<?php
include_once 'header.php';
require_once 'config.php';

 $con = mysql_pconnect("localhost","*****","*****");
 mysql_select_db("USE cards",$con);
 $cards=0;
 if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

 $sql = "SELECT * FROM cards ORDER BY RAND() LIMIT 3";

 $results = mysql_query($sql);
 $array = mysql_fetch_array($results);

 $num=mysql_num_rows($results);

 $i=0;
 while ($i < $num) {

 echo $rows['playerName'];
 $i++;
}

 include_once 'footer.php';

?>

我知道这可能是一个简单的新手问题,但我很感激帮助。

3 个答案:

答案 0 :(得分:3)

您的mysql_select_db调用应该只将数据库名称作为第一个参数,而不是整个USE语句。很可能它会无声地失败并且不会选择卡片数据库。然后查询失败(再次,静默)返回false。

答案 1 :(得分:1)

另外,它是mysql_num_rows(不是mysql_numrows)。

手动:http://php.net/manual/en/function.mysql-num-rows.php

答案 2 :(得分:1)

两件事,回显一个数组不会打印它(echo $ results;)而是使用print_r($ results)或var_dump($ results)和另一件事,我认为错误是由于没有返回结果引起的,但是如果您使用var_dump或print_r,您将能够验证是否是这种情况:)

这里也有一个拼写错误:$ con = mysql_pconnect(“localhost”,“jalexander”,“brunswick3”);从连接中移除p :)

此外,您可能希望在此处使用星号替换数据库凭据:)

最后,您声明变量卡但从不使用它?

实际上还有一个,将$ rows [playerName]更改为$ rows ['playerName']

要获得不同的行而不是使用while循环,您可以像这样使用foreach:

foreach($array as $row){
echo $row['playerName'];
}

或者使用while循环使用

$i=0;
 while ($i < $num) {

 echo $rows[$i]['playerName'];
 $i++;
}

它在您当前的代码中不起作用,因为您没有循环遍历数组的元素,只是每次都回显相同的元素