如何使用 PHP 从 mySQLi 查询中回显每一行?

Posted

技术标签:

【中文标题】如何使用 PHP 从 mySQLi 查询中回显每一行?【英文标题】:How to echo each row from mySQLi query using PHP? 【发布时间】:2017-01-01 13:43:44 【问题描述】:

以下查询返回活动表中 user_id 为 1 的所有行:

SELECT * FROM campaign WHERE user_id=1

在测试的情况下,这是两个结果。我如何能够从每一行回显一组列。例如,我想从每个结果中回显campaign_name。我尝试了各种方法,但都没有成功。

我的最终目标是这样的:

 <?php foreach($queryRow as $row)  ?>
                         <li>
                            <a>
                                <div>
                                    <p><?php echo($row['campaign_name']); ?></p>
                                    <p>
                                        Description Text
                                    </p>
                                </div>
                            </a>
                        </li>
 <?php  ?>

我对此感到很困惑,所以如果我的预期结果完全不正确,我深表歉意......

【问题讨论】:

您确定您的查询返回两行吗? 你读过the documentation吗?里面有很多例子。 也许您应该显示更多代码。您使用的是 mysqli_query(或 mysqli::query)还是 PDO?如果您使用的是 mysqli_query,您使用的是什么结果模式?您是如何将数据分配给 $queryRow 的? 我的查询确实返回了两个结果,但是我只能设法回显其中一个... 【参考方案1】:

试试这个:

$qry = "SELECT * FROM campaign WHERE user_id=1";
$res = mysqli_query($conn, $qry);

if(mysqli_num_rows($res) > 0)   // checking if there is any row in the resultset

    while($row = mysqli_fetch_assoc($res))  // Iterate for each rows
    
    ?>
        <li>
            <a>
                <div>
                    <p><?php echo($row['campaign_name']); ?></p>
                    <p>
                        Description Text
                    </p>
                </div>
            </a>
        </li>
    <?php
    

它将迭代结果集中的每一行。

【讨论】:

var_dump(mysqli_num_rows($res));返回 2,但只有两个活动中的第二个被回显。【参考方案2】:

我按照 Oldskool 的建议查看了文档,并意识到我使用了错误的方法来创建数组。我改为使用 mysqli_results 类的 fetch_all 特性来创建一个包含我的结果的多维数组。然后我可以使用以下代码来回显结果:

<!DOCTYPE html>
<html>
<body>
<?php
include('inc/database_initiation.php');

//print_r($userCampaigns);

foreach ($userCampaigns as $row) 
    //echo $row[2];
    //echo $row[4];
    echo $row['campaign_name'];
    echo '<br>';
    echo $row['promotion_coins'];
    echo '<br>';


?>
</body>
</html>

include 'inc/database_initiation 如下'

  <?php
  session_start();
  include_once 'userManagement/dbconnect.php';

  if(!isset($_SESSION['userSession']))
  
   header("Location: login.php");
  

  $query = $MySQLi_CON->query("SELECT * FROM users WHERE user_id=".$_SESSION['userSession']);
  $userRow=$query->fetch_array();

  $campaignQuery = $MySQLi_CON->query("SELECT * FROM campaign WHERE user_id=1");
  $userCampaigns = $campaignQuery->fetch_all(MYSQLI_ASSOC);
  //$MySQLi_CON->close();
  ?>

【讨论】:

以上是关于如何使用 PHP 从 mySQLi 查询中回显每一行?的主要内容,如果未能解决你的问题,请参考以下文章

在php中回显/返回一个数组

如何在PHP中回显已准备好的sql语句的结果

如何在 PHP 中回显 HTML?

如何使用视图在 php 中回显当前 Laravel 版本的版本?

如何使用 php 在 WordPress 插件中回显 json 数据 [重复]

使用单个查询从相关数据库表中回显嵌套的 JSON 数组?