2017-01-30 1 views
0

Я просто хочу вставить все записи продуктов, которые добавлены на страницу корзины. но когда я нажимаю кнопку проверки, вставлена ​​только одна запись, и мой запрос такой. так что если кто-нибудь может помочь мне, пожалуйста.Я хочу вставить два или более продуктов в базу данных при нажатии кнопки выписки

$sql = "insert into products (Product_id, Name) VALUES('$productid', '$name' where Customer_id='$customer_session_id'); 
+0

Вы не удосужились прочитать руководства и как использовать синтаксис функций базы данных? –

ответ

0

Прежде всего, MySQL INSERT Синтаксис не поддерживает "Где".

Затем, отвечая на ваш вопрос, вот пример: Insert multiple rows with one query MySQL

+0

ссылка, которую вы предоставили, не то, что я lokiing, потому что o, которая связывает ее, показывает вручную, но официально мой сайт будет жить, поэтому он должен вставить все из них, которые выбраны из базы данных – user5631466

0

Есть много проблем с вашим запросом.

  1. Предложение WHERE должно быть после закрытия paranthesis, потому что это не один из значений, которые вы хотите вставить.

  2. Если вы хотите Customer_id вашей покупки должен быть установлен в $customer_session_id, вам не нужен пункт WHERE, вы просто вставить его, как и все другие поля, например Product_id и Name.

  3. Объединение значений в запрос sql как это небезопасно, так как вы уязвимы для SQL-инъекции. Я предлагаю вам использовать PDO insetead.

  4. Возможно, вам необходимо вставить своего рода $customer_id вместо $Customer_session_id.

    <?php 
    
    $server_name = "server_name"; 
    $db_name = "db_name"; 
    $username = "username"; 
    $password = "password"; 
    
    try { 
        $db = new PDO("sqlsrv:server=$server_name ; Database = $db_name", $username, $password); 
    } catch (PDOException $e) { 
        echo $e->getMessage; 
    } 
    
    $sql = "insert into products (Product_id, Name, Customer_id) VALUES(:product_id, :name, :customer_session_id"; 
    $sth = $db->prepare($sql); 
    
    foreach($products_in_cart as $product) { 
        try { 
         $result = $sth->execute($product); 
    
         if($result === false) { 
          echo $sth->errorInfo; 
         } 
        } catch (PDOException $e) { 
         echo $e->getMessage(); 
        } 
    } 
    

Это предполагает:

  1. Данные для подключения к БД является правильным, и вы используете SQL Server.

  2. В таблице products есть поля Product_id, Name и Customer_id.

  3. $products_in_cart имеет следующую структуру (но любые значения, которые действительны для таблицы БД), в том числе ключей используются:

    $products_in_cart = [ 
        ["product_id" => "4928", 
        "name" => "Fruit blender", 
        "customer_session_id" => "1389"], 
        ["product_id" => "0840", 
        "name" => "Potato peeler", 
        "customer_session_id" => "1389"], 
        ["product_id" => "7348", 
        "name" => "Set of forks", 
        "customer_session_id" => "1389"] 
    ]; 
    

Если какое-либо из моих asumptions это не так, вы можете вероятно, исправить это без особых проблем.

Смежные вопросы