php mysqli 返回数组,php – 从mysqli查询返回数组的多行

本文讨论了如何在PHP中优化数据库查询,通过将查询结果存储到数组中并返回,以便在多个位置使用。作者展示了如何修改现有函数以使用预处理语句,避免SQL注入,并提供了一个例子来展示如何在其他文件中遍历返回的订单数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在我的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'].'
'

我只能在functions.php文件中执行此操作…

function getUserOrders($userId){

global $conn;

$query = "SELECT * ";

$query .= "FROM orders ";

$query .= "WHERE userid=" . $userId . " ";

$odrset = mysqli_query($conn, $query);

confirm_query($odrset);

while ($odr = mysqli_fetch_assoc($odrset)){

echo $odr['title'].$odr['orderid'].'
';

}

}

..并在我的orders.php文件中调用它,如下所示:

$userId = sql_prep($_SESSION['userid']) ;

getUserOrders();

这是不好的,因为我需要在其他地方回收功能并显示不同的字段及其值.所以我需要在我的order.php中将$odr作为数组返回

解决方法:

将其存储为数组,然后返回该数组.

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连接,以使用带有预准备语句的参数化查询.你可以在这里阅读更多关于这些的内容,http://php.net/manual/en/mysqli.quickstart.prepared-statements.php.这是首选方法,而不是转义.

以后使用……

$orders = getUserOrders($_SESSION['userid']);

foreach($orders as $order) {

echo $order['title'] . $order['orderid'];

}

你可能不需要使用这种方法的sql_prep函数,我不知道它做了什么.您的问题代码未将用户标识传递给函数,因此我认为这不是您的确切用法.

标签:php,arrays,mysql,mysqli

来源: https://codeday.me/bug/20190608/1201480.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值