1

我正在创建一个小型购物车,并将我的产品保存在会话中(无数据库)。我的会话设置产品 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 productsWHERE idIN '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; ?>
4

1 回答 1

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();
}
于 2012-12-03T20:14:56.027 回答