2017-03-18 8 views
2

私はカートデータベースを作成していて、48時間 "生きている"カートをinactive_cartsテーブルに転送したいと思います。PHPがデータベースに入っていません

今、私はこのコードを持っているが、問題は、それがデータベースに入れてdoesntの、ここ

は私のコードです私がチェックして$timeのすべてのアイテムがあれば、コマンドに行く:

foreach ($times as $time) { 
    $username = $time['username']; 
    $user_id = $time['user_id']; 
    $cart_id = $time['cart_id']; 
    $cart_value = $time['cart_value']; 
    if ($timeAlive >= 12000) { 
     try { 

      $queryInctive = $con->prepare(' 
       INSERT INTO inactive_carts(`cart_id` , `username` , `user_id` , `cart_value` , `date`) 
       VALUES(:cart_id , ":username" , :user_id , ":cart_value" , CURRENT_TIMESTAMP)'); 
      $queryInctive->bindParam(":cart_id" , $cart_id , PDO::PARAM_INT); 
      $queryInctive->bindParam(":username" , $username); 
      $queryInctive->bindParam(":user_id" , $user_id , PDO::PARAM_INT); 
      $queryInctive->bindParam(":cart_value" ,$cart_value); 
      $queryInctive->execute(); 
     } catch (Exception $e) { 
      echo "Error is: " . $e->getMessage(); 
     } 
    } 
} 

私はまったくエラーにはなりません。それがあるように思わすべてが順調

: cart_idは、ユーザ名は、USER_IDは、cart_valueは、私はこの問題は変数名だったという問題があった配列

+0

どのようにあなたの '$回を得るのですかで次のように追加することで、ネイティブのPHPのエラー報告を有効にする必要があります'変数? 'if'ブロックを入力してもよろしいですか? PDOは例外をスローするように設定されていますか? PHPのネイティブエラーログはどうですか? 'error_reporting(E_ALL); ini_set( "display_errors"、1); ' – Qirel

答えて

-1

int型の文字列int型ですされています私のコードでは大文字と小文字が使用されていました。

https://www.w3schools.com/php/php_mysql_intro.asp

私はここで私はPHPとMySQLについて私が知っているすべてのことを学びました。知られている良い例です。

0

クエリですべてを行うことで、これを単純化できます。 INSERT..SELECTを実行し、その後に行を削除します。この方法では、最初に値を取得する必要はありません(どのように$times変数を取得するのかわかりません)。

$con->beginTransaction();  // Begin transaction 
try { 
    // Set a MySQL variable with the current time 
    $con->query('SET @NOW := (NOW())'); 

    // Insert from old table into new table 
    $con->query('INSERT INTO inactive_carts SELECT * FROM carts WHERE date < DATE_SUB(@NOW, INTERVAL 2 DAY)'); 

    // Then delete the old values 
    $con->query('DELETE FROM carts WHERE date < DATE_SUB(@NOW, INTERVAL 2 DAY)'); 

    // Commit changes! 
    $con->commit(); 
} catch (PDOException $e) { 
    // Something went bad, and transfer wasn't made 
} 

注:これは、cartsinactive_cartsが同じ列

があることを前提としても、あなたがPDOの例外を有効にしていない可能性がありますので、あなたがすべてのエラーを取得しない場合がありますので注意してください。 PDOオブジェクトを作成した後に、

$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

を追加すると、それが有効になります。また、あなたのファイルの先頭

<?php 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 
+0

問題を修正しました。 –

+0

Btw、データベースに配列を挿入する方法を知っていますか? –

+0

これはもっとエレガントでダイナミックなソリューションですが、それを採用することもできます;-)配列やカンマ区切りの値をデータベースに挿入しないでください。代わりに正規化する必要があります。 http://stackoverflow.com/questions/246701/what-is-normalisation-or-normalization – Qirel

関連する問題