1

当我直接从我的管理员 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

4 回答 4

1

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

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

echo mysql_num_rows($result2);
于 2012-12-19T20:54:07.047 回答
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

于 2012-12-19T20:55:05.777 回答
1

通过使用:

print_r(count($rows2));

你只是在计算这一行的数组键的数量

你应该这样做:

echo mysql_num_rows($result2);

于 2012-12-19T20:57:42.027 回答
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);
于 2012-12-19T20:55:17.640 回答