How to echo each row from mySQLi query using PHP?

2019-09-16 09:45发布

问题:

The following query returns all rows from the campaign table that have the user_id of 1:

SELECT * FROM campaign WHERE user_id=1

In the case of testing this is two results. How would I be able to echo a set column from each of the rows. For example, I want to echo the campaign_name from each of the results. I have tried various methods however, I have had no success.

My end goal would be something like this:

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

I'm quite at lost with this so I apologise if my intended result is completely off...

回答1:

Try this:

$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
    }
}

It will iterate for each row in the resultset.



回答2:

I looked into the documentation as Oldskool kindly suggested and realised I was using the wrong method to create an array. I instead use the fetch_all feature of the mysqli_results class to create a multidimensional array with my results. Then I was able to use the following code to echo out the results:

<!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>

The include 'inc/database_initiation is as follows'

  <?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();
  ?>