我正在创建一个小型购物车,我将我的产品保存在一个会话中(没有数据库)。我的会话设置了产品ID。但是如何从我的数据库中获取与我存储的会话中的产品ID匹配的正确产品?
代码:
foreach ( (isset($shopcart) && is_array($shopcart) && count($shopcart) > 0) ? $shopcart : array() as $item )
{
$this->template->shopcart = $shopcart;
}
<?php if( isset( $shopcart ) ): ?>
<?php foreach ($shopcart as $item): ?>
<?php echo $item['id'] ?>
<?php endforeach ?>
<?php endif; ?>
编辑:
foreach ( (isset($shopcart) && is_array($shopcart) && count($shopcart) > 0) ? $shopcart : array() as $item )
{
$this->template->shopcart = DB::select()->where('id', 'IN', $item['id']) ->from('products')->execute();
//$this->template->shopcart = $shopcart;
}
Database_Exception [1064]:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第1行的“5”附近使用正确的语法[SELECT * FROM products
WHERE id
IN'5']
编辑2:
$this->template->shopcart = array();
if (count($shopcart))
{
$this->template->shopcart =
DB::select()
->where('id', 'IN', $item)
->from('products')
->execute();
}
模板:
<?php if( isset( $shopcart ) ): ?>
<?php foreach ($shopcart as $item): ?>
<?php echo $item['id'] ?> //This is the product id in my saved session but i need to get the name from the database
<?php endforeach ?>
<?php endif; ?>
答案 0 :(得分:2)
您使用的是ORM还是查询构建器?如果您使用ORM,您可以这样做:
$this->template->shopcart =
ORM::factory('products')
->where('id', 'IN', $_SESSION['cart'])
->find_all();
如果您使用的是查询构建器:
$this->template->shopcart =
DB::select()
->where('id', 'IN', $_SESSION['cart'])
->from('products')
->execute();
在您看来,现在按照您的$shopcart
进行迭代。
使用你的案例,(把它从你的循环中取出)
$this->template->shopcart = array();
if (count($shopcart))
{
$product_ids = array();
foreach ($shopcart as $item)
{
$product_ids[] = $item['id'];
}
$this->template->shopcart =
DB::select()
->where('id', 'IN', $product_ids)
->from('products')
->execute();
}