【问题标题】:PHP sql does not return all valuesPHP sql不返回所有值
【发布时间】:2012-12-07 07:29:35
【问题描述】:

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

【问题讨论】:

标签: php html mysql phpmyadmin


【解决方案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】:

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

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

echo mysql_num_rows($result2);

【讨论】:

    【解决方案3】:

    通过使用:

    print_r(count($rows2));

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

    你应该这样做:

    echo mysql_num_rows($result2);

    【讨论】:

      【解决方案4】:

      您必须对结果进行迭代。

      $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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-29
        • 1970-01-01
        • 2022-10-14
        • 2016-02-20
        • 1970-01-01
        • 1970-01-01
        • 2021-09-14
        • 2015-10-24
        相关资源
        最近更新 更多