2012-12-02 62 views
0

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

我不知道我是否没有正确连接到数据库,或者是否有其他错误。基本上我试图从我的表“卡”显示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'; 

?> 

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

+0

见我的答案:) –

回答

3

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

0

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

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

+0

我所做的编辑,现在我得到三个名字只是输出呼应同一个,但它输出的同名3次。每次我重新加载它是一个不同的名称,但它只是3次相同的名称。 – user1871031

+0

@ user1871031看到我的回答:) –

0

两件事情,呼应一个数组不会打印(回声$结果;)而使用的print_r($结果)或后续代码var_dump($结果)和其他的事情,我估计错误造成可导致不返回任何结果,但如果你用var_dump或print_r的,你将能够验证是否是这样的话:)

还这里有一个错字:$ CON = mysql_pconnect(“localhost”,则“jalexander” “brunswick3”);移除连接:)

另外,P,你可能想在这里的asterixes取代您的数据库凭据:)

最后,声明变量卡,但从来没有使用它?

其实多一个,改变$行[playerName]到$行[ 'playerName']

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

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

还是要做到这一点使用while循环使用

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

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

它没有在工作您当前的代码,因为您没有通过数组中的元素循环,每次