2016-01-14 135 views
0

我想从mySQL表中获取数据,并希望将每一行(即我的查询获得的)插入到另一个表中。php插入mysql while循环

有了下面的代码让我的DATAS:

$cart = new Dbconn(); 
$query = new Dbconn(); 
if ($cart->pdo()) { 
    $cart->stmt("SELECT id, product FROM cart WHERE uid =:uid"); 
    $cart->bindParam(':uid', Session::get('uid')); 
    $cart->exe(); 
} 

后,我得到了我想要把它插入数据,while循环

while ($rowPay = $cart->fetch()) { 
    if ($query->pdo()) { 
     $query->stmt('INSERT INTO orders (products_id, order_id) VALUES(:uid, :products)'); 
     $query->bindParam(':user_id', Session::get('uid')); 
     $query->bindParam(':products', $rowPay['product']); 
     $query->exe(); 
    } 
} 

他得到所有提交的数据,但仅插入第一条目。我的错误在哪里?

问候

+0

是你的外循环选择? – devpro

+0

@devpro他使用抓取,而不是fetchall,虽然显然有人说他不需要这样做的fetchall,亲自我会设置一个抓取,然后使用foreach来循环所有结果。 – TheHidden

+0

你从哪里得到'$ payCart'变量。 – akhilp2255

回答

0

如果仅插入第一个条目,再有就是与您尝试插入的参数有问题。 您可能尝试使用相同的主键插入多行。 我需要知道每个表中的主键在哪里,以帮助您获得更多。

+0

我唯一的主键是一个汽车公司,我不插入我的查询 – user3676560

0

$ payCart-> fetch()获取单行,$ payCart-> fetchAll()获取所有行。

尝试,因为这

while ($rowPay = $payCart->fetchAll(PDO::FETCH_ASSOC)) { 
     if ($query->pdo()) { 
      $query->stmt('INSERT INTO orders' 
         .'(products_id, order_id)' 
         .'VALUES(:uid, :products)'); 
      $query->bindParam(':user_id', Session::get('uid')); 
      $query->bindParam(':products', $rowPay['product']); 
      $query->exe();}}