在PHP中显示SQL查询结果

18
我正在尝试从SQL数据库中在PHP中显示结果。在phpMyAdmin中,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];

总的来说,我需要通过表格ID从最小值到最大值获得随机数。


如果这张图片是你的实际输出,那么看起来你的服务器上没有启用 PHP。或者至少代码没有被解析为 PHP 代码,这可能有几个原因。你发布的代码是 .php 文件的完整内容吗? - Gerald Schneider
只翻译文本内容:没有只有一部分工作不正常,其他都正常。PHP仅在那里中断。 - user3052127
在第2行末尾也缺少一个分号。 - ScottC
6个回答

20

您需要从查询得到的结果集中获取每行数据。您可以使用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']; 
}

9
你需要使用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扩展。你可以在这里阅读更多关于此话题的信息


6

使用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中的输出是什么? - Neeraj Kumar
获取ID等于随机生成数字的行。 - user3052127

0

我必须更改

$result = mysql_query($sql);

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

然后使用foreach(感谢questionto42)

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

不知道是否相关,但我使用以下托管公司: Apache版本2.4.51 PHP版本7.3.33 MySQL版本5.6.41-84.1


0

奇怪的是,其他答案中的任何一个while循环都对我无效,它们没有抛出错误,但它们的回显为空。当使用foreach时它可以工作:

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

灵感来自:通过循环和打印fetchAll浏览PDO


0
$query ="
  SELECT 
   *
  FROM
    users
";
die($query);

在这种情况下,您的查询将在浏览器上打印,请复制此查询并在SQL Server上运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接