我在我的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