【问题标题】:Display SQL query results in php在php中显示SQL查询结果
【发布时间】:2013-12-16 12:36:16
【问题描述】:

我正在尝试在 php 中显示来自 sql 数据库的结果 MySQL 语句是正确的,并且在 phpMyAdmin 中执行了我想要的操作,但由于某种原因,我的代码在网页中中断了

这里是代码

require_once('db.php');  
$sql="SELECT * FROM  modul1open WHERE idM1O>=(SELECT FLOOR( MAX( idM1O ) * RAND( ) )  FROM  modul1open) 
ORDER BY idM1O LIMIT 1"

$result = mysql_query($sql);
echo [$result];

一般来说,我需要由表 id 限制从 min 到 max 的随机数

【问题讨论】:

  • 如果图片是您的实际输出,看起来您没有在服务器上启用 PHP。或者至少代码没有被解析为 PHP 代码,这可能有几个原因。您发布的代码是 .php 文件的完整内容吗?
  • 不只是不工作的片段,其余的工作都很好。 php 只在那里中断
  • 还缺少一个 ;在第 2 行的末尾

标签: php mysql random numbers generator


【解决方案1】:

您需要从查询获得的结果集中的每一行中获取数据。您可以为此使用mysql_fetch_array()

// Process all rows
while($row = mysql_fetch_array($result)) {
    echo $row['column_name']; // Print a single column data
    echo print_r($row);       // Print the entire row data
}

将您的代码更改为:

require_once('db.php');  
$sql="SELECT * FROM  modul1open WHERE idM1O>=(SELECT FLOOR( MAX( idM1O ) * RAND( ) )  FROM  modul1open) 
ORDER BY idM1O LIMIT 1"

$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
    echo $row['fieldname']; 
}

【讨论】:

    【解决方案2】:

    你需要做一个while循环来获取SQL查询的结果,像这样:

    require_once('db.php');  
    $sql="SELECT * FROM  modul1open WHERE idM1O>=(SELECT FLOOR( MAX( idM1O ) * RAND( ) )    
    FROM modul1open) ORDER BY idM1O LIMIT 1";
    
    $result = mysql_query($sql);
    
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    
        // If you want to display all results from the query at once:
        print_r($row);
    
        // If you want to display the results one by one
        echo $row['column1'];
        echo $row['column2']; // etc..
    
    }
    

    此外,我强烈建议不要使用 mysql_*,因为它已被弃用。而是使用 mysqliPDO 扩展名。你可以阅读更多关于here的信息。

    【讨论】:

      【解决方案3】:

      您无法使用 mysql_query() 直接查看查询结果。它只是在 mysql 中触发查询,没有别的。

      要获得结果,您必须在脚本中添加一些东西,例如

      require_once('db.php');  
       $sql="SELECT * FROM  modul1open WHERE idM1O>=(SELECT FLOOR( MAX( idM1O ) * RAND( ) )  FROM  modul1open) ORDER BY idM1O LIMIT 1";
      
       $result = mysql_query($sql);
       //echo [$result];
      while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
          print_r($row);
      }
      

      这会给你结果。

      【讨论】:

      • 您的查询是否正确?如果是,那么 mysql 中的输出是什么?
      • 获取id等于随机生成数的行
      【解决方案4】:

      奇怪的是,其他答案中的 while 循环都不适合我,他们没有抛出错误,但他们的回声是空的。它在使用 foreach 时起作用:

      foreach($result as $row) {
          //echo $row['column_name']; // Print a single column data
          echo print_r($row);       // Print the entire row data
      }
      

      创意来自:PDO looping through and printing fetchAll

      【讨论】:

        【解决方案5】:

        我必须改变

        $result = mysql_query($sql);
        

        $result = $conn->query($sql);
        

        然后 使用 foreach(感谢 questionto42)

        $result = $conn->query($sql);
        foreach($result as $row) {
            echo $row['column_name'];
        }
        

        不知道这是否重要,但我在一家托管公司工作: 阿帕奇版本 2.4.51 PHP 版本 7.3.33 MySQL 版本 5.6.41-84.1

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-14
          • 2018-01-19
          • 1970-01-01
          • 1970-01-01
          • 2020-06-02
          相关资源
          最近更新 更多