如何使用会话数组从数据库选择中提取项目?

Posted

技术标签:

【中文标题】如何使用会话数组从数据库选择中提取项目?【英文标题】:How can I pull items from database select with session array? 【发布时间】:2015-08-14 06:13:46 【问题描述】:

我的代码可以像这样将数组添加到会话中:

array_push($_SESSION['cart']['1'] = 3);
array_push($_SESSION['cart']['18'] = 1);

这将添加项目 ID“1”和数量“3”,并添加项目 ID“18”和数量“1”。我想在购物车页面上显示数据库中的这些项目。 我不擅长 php 或 sql,但类似:

while (list ($id, $quantity) = each ($_SESSION['cart']))  
$results = $conn->query("SELECT * FROM products ORDER BY id ASC");

并执行类似 find $id(from session) = $id(from database) 的操作,这样我就可以将会话显示为数据库中的信息。包含商品名称、商品描述、商品价格和数量。

【问题讨论】:

【参考方案1】:

这是一个简单的示例,突出显示您尝试从 $_SESSION 检索 (id_item) 的内容:

http://www.tehplayground.com/#Iyf7c0LTM

$arr = array();
$arr['cart']['1'] = 3;
$arr['cart']['18'] = 5;

// This loop will display every id_item that had be added to the "cart"
foreach($arr['cart'] as $row)

    print "id_item : " . $row . "\n";

你现在可以使用你的 sql 查询:

$sql = "SELECT * FROM products WHERE id =". $row;

编辑 - 因为你不清楚,所以我直接回答你:

<?php
session_start();

// Examples of shopped items (added to $_SESSION['cart'])
$_SESSION['cart']['1'] = 3;
$_SESSION['cart']['18'] = 5;

// This loop will display every id_item that had be added to the "cart"
// Further informations how foreach works with array 
// https://***.com/questions/10057671/how-foreach-actually-works
foreach($_SESSION['cart'] as $row)

    print "id_item : " . $row . "\n";


// Full Display to help understanding the process
print "<pre>";
print_r($_SESSION['cart']);
print "</pre>";

?>

关于“foreach 如何与数组交互”的高级解释:here

编辑 2: 填写数据库变量+表的列名

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "";

$mysqli = new mysqli($servername, $username, $password, $dbname);

// check connection
if ($mysqli->connect_errno) 
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();


// Query the DB - Get itemID & quantity added in the cart table
$query = "SELECT itemID, itemQuantity FROM cart";
$result = $mysqli->query($query);

// Return the result into an array
$res_array = $result->fetch_array();

// Add the items into $_SESSION
// Pattern : $_SESSION['cart']['$itemId'] = $itemQuantity

foreach($res_array as $row)
    $_SESSION['cart'][($row['itemID'])] = $row['itemQuantity']

print "<pre>";
print_r($_SESSION['cart']);
print "</pre>";
?>

例如:here

【讨论】:

我尝试过这种方式,但无法到达任何地方。你知道另一种可行的方法吗?或者也许更好地描述这种方式。您喜欢使用不执行任何操作的代码进入页面。谢谢。 Ctrl+enter 将显示它。它是一个 php 小提琴 好吧,你不明白我的问题。我需要在数据库中的$_SESSION 中显示这些项目。按项目 ID 引用。我已经设置了完整的会话和购物车系统。但它包含array_push($_SESSION['cart']['$itemName'] = $itemPrice); 之类的信息,我正在尝试做array_push($_SESSION['cart']['$itemId'] = $itemQuantity); 然后与数据库进行比较并将item1 信息从数据库拉到购物车中。谢谢。上帝保佑。 你是用 pdo 还是 mysqli 连接你的数据库? 问题真的不清楚 - 根据您的需要更新了最后一次 - 请参阅编辑 2【参考方案2】:

与其从数据库中获取所有内容,然后在 php 中进行比较,您还可以执行以下操作来仅获取您需要的记录:

"SELECT * FROM products WHERE id IN(1,18) ORDER BY id ASC"

PHP 可能很简单:$in = implode(",", $_SESSION['cart']);,尽管您还应该确保防止 SQL 注入。

【讨论】:

以上是关于如何使用会话数组从数据库选择中提取项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 laravel 中的会话数组中删除项目

如何加入从我的数组的每个元素的数据库中提取的结果并在 Laravel 8 中以 json 形式返回

如何使用 jQuery 从多个集合选择中提取 id?

如何从 React 中的嵌套对象数组中提取数据?

如何在数据库查询中使用会话和数组来存储和显示数据

如何通过使用数组从 Google 表格中提取数据并格式化来优化 Apps 脚本代码?