PHP sql不返回所有值

时间:2012-12-19 20:52:28

标签: php html mysql phpmyadmin

当我直接从PHP执行此查询时,我的管理员得到了5个结果。

SELECT img FROM `table`.`goog` WHERE `url` LIKE '%google.com%' and `pictureID` != 'picture_50d22657a423b6.62354164'; 

然而,当我的代码

$sql2 = "SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID';";
    // echo $sql2;
$result2=mysql_query($sql2);
$rows2 = mysql_fetch_array($result2);

mysql_close($con);

print_r(count($rows2));

echo "<br/>";

echo $sql2;

打印出来

2 
SELECT img FROM `ashkan`.`goog` WHERE `url` LIKE '%66.228.42.45%' and `pictureID` != 'picture_50d22657a423b6.62354164';

我还要注意,我运行的php我的管理员的查询是从我的代码返回的内容中复制的。

那么,为什么一个只返回2个项目,另一个返回5?

修改

我在底部添加了以下内容

var_dump($rows2);
echo "<br/>";
echo mysql_num_rows($result2);

并得到了这个

array(2) { [0]=> string(1) "b" ["img"]=> string(1) "b" } 
5 

我有手动选择行的东西

基本上我希望能够做到

echo $rows2[somenum]; //that some number is at random and only one at a time

然而,按原样,我只能访问第0项而不是全部5项。

4 个答案:

答案 0 :(得分:1)

mysql_fetch_array()仅从结果集中提取一行,并将指针向前移动一行。

如果要计算查询返回的行数,请使用mysql_num_rows()

echo mysql_num_rows($result2);

答案 1 :(得分:1)

更新代码

这是您的更新代码:

$mysqlQuery=mysql_query("SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID");
$databaseArray=array();

while($arrayQuery=mysql_fetch_array($mysqlQuery))
{
    $imageName=$arrayQuery['img'];

    $databaseArray[]=$imageName;
}

echo "Database returned ".count($databaseArray)." rows.";

print_r($databaseArray);

echo $databaseArray[0]; // prints image name row 1
echo $databaseArray[1]; // prints image name row 2
echo $databaseArray[2]; // prints image name row 3
// etc etc etc

旧代码

这样做:

$sql2 = "SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID';";
    // echo $sql2;
$result2=mysql_query($sql2);

while($data = mysql_fetch_array($result2))
{
    var_dump($data);
}

mysql_fetch_array一次只返回一行。上面的代码循环遍历数据库中的所有行。如果您只想计算行数,请检查mysql_num_rows()函数。

你也应该使用mysqli_ *而不是mysql_ *,因为它已被弃用。请阅读更多: http://php.net/manual/en/book.mysqli.php

答案 2 :(得分:1)

使用:

print_r(count($rows2));

您只计算此行的数组键数

你应该这样做:

echo mysql_num_rows($result2);

答案 3 :(得分:0)

你必须迭代结果。

$sql2 = "SELECT img FROM `table`.`goog` WHERE `url` LIKE '%$url%' and `pictureID` != '$pictureID';";
    // echo $sql2;
$result2=mysql_query($sql2);

// iterate over the results
while($row = mysql_fetch_assoc($result2)) {
    print_r($row); 
}

mysql_close($con);