2016-07-04 84 views
0

所以,我有这个代码的小问题。它的工作正常,但如果我尝试插入两个(或更多...)数据,它的只是第一个数据将被插入。我该如何解决这个问题?插入数据到mysql,只会插入第一个日期

<?php 
    error_reporting(E_ERROR); 
    session_start(); 
    include("db_config.php"); 
    if(isset($_SESSION['login_user'])) 
    { 
    $username=$_SESSION['login_user']; 
    $sql[0] = "SELECT * from orders where username='$username'"; 
    $result= mysqli_query($conn,$sql[0]) or die(mysqli_error()); 

    if (mysqli_num_rows($result)>0) 
    { 
     while ($record = mysqli_fetch_array($result)) 
     { 
      $name =$record[username]; 
      $id = $record[id]; 
      $nmb_products = $record[nmb_products]; 
      $total_value = $record[total_value]; 
      $order_date = $record[order_date]; 
      $city = $record[dest_city]; 
      $address = $record[address]; 
     } 
    } 
    else echo "Failed Access"; 

    $sql[1] = "INSERT INTO ordered (username,nmb_products,product_id,total_value, city, address) VALUES ('$name', '$nmb_products', '$id', '$total_value', '$city', '$address')"; 
    $sql[2] = "DELETE FROM orders WHERE username='$username'"; 
    if(mysqli_query($conn, $sql[1]) && mysqli_query($conn, $sql[2])) 
    { 
     header("Location:mypurchases.php"); 
     exit(); 
    } 
    } 
    else 
    echo"Login first"; 

    $conn->close(); 
    ?> 
+0

你是什么意思“如果我尝试插入两个(或更多...)数据” –

+1

举动'$ SQL [1]'内部while循环 –

+0

我的意思是,我还有一个页面,而这页面有两个数据,只有第一个插入,另一个只是删除。 – Achy

回答

0

所有这些部分:

$sql[1] = "INSERT INTO ordered (username,nmb_products,product_id,total_value, city, address) VALUES ('$name', '$nmb_products', '$id', '$total_value', '$city', '$address')"; 
$sql[2] = "DELETE FROM orders WHERE username='$username'"; 
if(mysqli_query($conn, $sql[1]) && mysqli_query($conn, $sql[2])) 
{ 
    header("Location:mypurchases.php"); 
    exit(); 
} 

可能会在这个循环:

if (mysqli_num_rows($result)>0) 
{ 
    while ($record = mysqli_fetch_array($result)) 
    { 
     $name =$record[username]; 
     $id = $record[id]; 
     $nmb_products = $record[nmb_products]; 
     $total_value = $record[total_value]; 
     $order_date = $record[order_date]; 
     $city = $record[dest_city]; 
     $address = $record[address]; 
    } 
} 

赞好:

if (mysqli_num_rows($result)>0) 
{ 
    while ($record = mysqli_fetch_array($result)) 
    { 
     $name =$record[username]; 
     $id = $record[id]; 
     $nmb_products = $record[nmb_products]; 
     $total_value = $record[total_value]; 
     $order_date = $record[order_date]; 
     $city = $record[dest_city]; 
     $address = $record[address]; 



     $sql[1] = "INSERT INTO ordered (username,nmb_products,product_id,total_value, city, address) VALUES ('$name', '$nmb_products', '$id', '$total_value', '$city', '$address')"; 
     $sql[2] = "DELETE FROM orders WHERE username='$username'"; 
     if(mysqli_query($conn, $sql[1]) && mysqli_query($conn, $sql[2])) 
     { 
      /*header("Location:mypurchases.php"); 
      exit();*/ 
      //Do something 
     } 
    } 
} 
+1

'header();退出();循环内肯定会有帮助。 –

+0

是的。这是一个错误... 我的答案只是给出了使用的逻辑。 – Yvan

+1

啊,谢谢:)现在工作 – Achy

0

试试这个, 你必须把在查询所有DATAS:

if (mysqli_num_rows($result)>0) 
{ 
    $sql[1]=''; 
    while ($record = mysqli_fetch_array($result)) 
    { 
     $name =$record[username]; 
     $id = $record[id]; 
     $nmb_products = $record[nmb_products]; 
     $total_value = $record[total_value]; 
     $order_date = $record[order_date]; 
     $city = $record[dest_city]; 
     $address = $record[address]; 
     $sql[1].=" INSERT INTO ordered (username,nmb_products,product_id,total_value, city, address) VALUES ('$name', '$nmb_products', '$id', '$total_value', '$city', '$address');"; 
    } 
} 
else echo "Failed Access"; 


$sql[2] = "DELETE FROM orders WHERE username='$username'"; 
if(mysqli_multi_query($conn, $sql[1]) && mysqli_query($conn, $sql[2])) 
{ 
    header("Location:mypurchases.php"); 
    exit(); 
} 
} 
+0

使用mysqli_multi_query – JYoThI