php使用while循环插入mysql

时间:2016-01-14 13:11:07

标签: php mysql

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

使用以下代码我得到我的数据:

$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();
    }
}

他获得所有数据但只插入第一个条目。我的错误在哪里?

问候

2 个答案:

答案 0 :(得分:0)

如果仅插入第一个条目,则尝试插入的参数存在问题。 您可能尝试使用相同的主键插入多行。 我需要知道每个表中的主键位置,以便为您提供更多帮助。

答案 1 :(得分: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();}}