Php 从mysqli查询返回数组的多行

Php 从mysqli查询返回数组的多行,php,mysql,arrays,mysqli,Php,Mysql,Arrays,Mysqli,我的functions.php文件中有这个 function getUserOrders($userId){ global $conn; $query = "SELECT * "; $query .= "FROM orders "; $query .= "WHERE userid=" . $userId . " "; $odrset = mysqli_query($conn, $query); while ($odr = mysq

我的functions.php文件中有这个

function getUserOrders($userId){
    global $conn;
    $query = "SELECT * ";
    $query .= "FROM orders ";
    $query .= "WHERE userid=" . $userId . " ";      
    $odrset = mysqli_query($conn, $query);  

    while ($odr = mysqli_fetch_assoc($odrset)){
        return $odr;
    } 
}
我需要在orders.php文件中显示返回的$odr数组中的特定字段及其值,正如这段代码所示

$userId = sql_prep($_SESSION['userid']) ;
getUserOrders($userId);
echo $odr['title'].$odr['orderid'].'<br>'

这是不好的,因为我需要在其他地方循环函数,并显示不同的字段及其值。因此,我需要在我的订单中将$odr作为数组返回。php将其存储为数组,然后返回数组

function getUserOrders($userId){
    global $conn;
    $query =
      "SELECT * 
         FROM orders 
        WHERE userid= ?";    
    $odrset = mysqli_prepare($conn, $query);
    mysqli_stmt_bind_param($odrset, 'i', $userId);
    mysqli_stmt_execute($odrset);

    while ($odr = mysqli_fetch_assoc($odrset)){
        $return[] = $odr;
    }
    return $return;
}
我已经更新了您的
mysqli
连接,以使用带有预置语句的参数化查询。您可以在此处阅读更多有关这些的信息。这是比逃跑更好的方法

以后使用

$orders = getUserOrders($_SESSION['userid']);
foreach($orders as $order) {
     echo $order['title'] . $order['orderid'];
}

使用这种方法,您可能不需要
sql\u prep
函数,我不确定它起了什么作用。您的问题代码没有将
用户ID
传递给函数,因此我认为这不是您的确切用法。

// functions.php
function getUserOrders($userId){
    global $conn;
    $query = "SELECT * ";
    $query .= "FROM orders ";
    $query .= "WHERE userid=" . $userId . " ";      
    $odrset = mysqli_query($conn, $query);  

    $results = array();
    while ($odr = mysqli_fetch_assoc($odrset)){
        $results[] = $odr;
    }

    return $results;
}


// in your orders file
$userid = sql_prep($_SESSION['userid']);
$orders = getUserOrders($userid);

foreach ($order as $orders) {
    echo $order['title']. $order['orderid'] . '<br>';
}
//functions.php
函数getUserOrders($userId){
全球$conn;
$query=“SELECT*”;
$query.=“来自订单”;
$query.=“WHERE userid=”.$userid.“;
$odrset=mysqli_查询($conn$query);
$results=array();
而($odr=mysqli\u fetch\u assoc($odrset)){
$results[]=$odr;
}
返回$results;
}
//在你的订单档案里
$userid=sql_prep($_会话['userid']);
$orders=getUserOrders($userid);
foreach($订单作为$订单){
echo$order['title'].$order['orderid'].
; }
只是吹毛求疵,但可能应该包括OPs
$userId=sql\u prep($\u SESSION['userId')
因为看起来它们有一些次要的功能,所以我没有直接插入到
getUserOrders()
@Sean true中,而是更新了使用准备好的语句。谢谢。有问题还是有答案?
$orders = getUserOrders($_SESSION['userid']);
foreach($orders as $order) {
     echo $order['title'] . $order['orderid'];
}
// functions.php
function getUserOrders($userId){
    global $conn;
    $query = "SELECT * ";
    $query .= "FROM orders ";
    $query .= "WHERE userid=" . $userId . " ";      
    $odrset = mysqli_query($conn, $query);  

    $results = array();
    while ($odr = mysqli_fetch_assoc($odrset)){
        $results[] = $odr;
    }

    return $results;
}


// in your orders file
$userid = sql_prep($_SESSION['userid']);
$orders = getUserOrders($userid);

foreach ($order as $orders) {
    echo $order['title']. $order['orderid'] . '<br>';
}