2017-06-10 11 views
0

動作しない私は、PHPコードから、この更新クエリを実行します。更新クエリが

$update_begin_insurance = "UPDATE `vehicles` 
          SET `begin_insurance_date` = '$begin_insurance' 
          WHERE `plate` = '$plate'"; 

$conn->query($update_begin_insurance); 

$connPDOオブジェクトです。

問題は、例外はすべて$connによってスローされますが、データベースのvehiclesテーブルは更新されません。だから、phpmyadminで直接このクエリを実行しようとしましたが、正しく動作するので、PHPの問題だと思いますが、どこに問題があるのか​​わかりません。 私のbegin_insurance_date列の型はDATEで、$begin_insuranceは正しい形式の文字列です(YYYY-MM-DD、私は2017-06-10でこのコードを試しました)。

私はこれが$update_begin_insuranceechoであるMySQLのDBMS

を使用しています:

UPDATE `vehicles` 
SET `begin_insurance_date` = '2017-06-10' 
WHERE `plate` = 'ccccc' 

UPDATE

これは私のページの完全なPHPコードです:

<?php 
    require_once "connect_db.php"; 

    $plate = $_POST["plate"]; 
    $begin_insurance = $_POST["begin_insurance"]; 
    $end_insurance = $_POST["end_insurance"]; 
    $fuel_economy = $_POST["fuel_economy"]; 
    $fuel_type = $_POST["fuel_type"]; 
    $response = array(); 

    try 
    { 
     $conn->beginTransaction(); 

     if ($begin_insurance != "") 
     { 
      $update_begin_insurance = "UPDATE `vehicles` 
             SET `begin_insurance_date` = '$begin_insurance' 
             WHERE `plate` = '$plate'"; 

      $conn->query($update_begin_insurance); 
     } 

     if ($end_insurance != "") 
     { 
      $update_end_insurance = "UPDATE `vehicles` 
            SET `end_insurance_date` = '$end_insurance' 
            WHERE `plate` = '$plate'"; 
      $conn->query($update_end_insurance); 
     } 

     if ($fuel_economy != "") 
     { 
      $update_fuel_economy = "UPDATE `vehicles` 
            SET `fuel_economy` = $fuel_economy 
            WHERE `plate` = '$plate'"; 
      $conn->query($update_fuel_economy); 
     } 

     if ($fuel_type != "") 
     { 
      $update_fuel_type = "UPDATE `vehicles` 
           SET `id_fuel` = $fuel_type 
           WHERE `plate` = '$plate'"; 
      $conn->query($update_fuel_type); 
     } 

     $response["post"] = $_POST; 
     $response["error_code"] = "0"; 
     $response["error_message"] = "none"; 
     $response["driver_error_code"] = "0"; 
    } 
    catch (PDOException $e) 
    { 
     if ($conn->inTransaction()) 
     { 
      $conn->rollBack(); 
     } 

     $response["post"] = $_POST; 
     $response["error_code"] = $e->getCode(); 
     $response["error_message"] = $e->getMessage(); 
     $response["driver_error_code"] = $e->errorInfo[1]; 
    } 

    echo json_encode($response); 
?> 

私はidの前に、私は例外がありません(あなたが見ることができるように、私も$_POST配列を印刷して、パラメータが正しく受信されているかどうかを確認します。 これは何echo json_encode($response)印刷物である:私はいくつかのINSERTクエリを実行する他のPHPファイルを持っている、と彼らは正常に動作するため、接続が正常に動作すると確信している

{ "post": { "plate":"ccccc", "begin_insurance":"2017-06-10" }, "error_code":"0", "error_message":"none", "driver_error_code":"0" }

+1

コードで生成される最終クエリは何ですか。準備された声明でそれを試しましたか? – Peon

+0

@DainisAbols私は自分の質問を編集しました。私は質問の印刷物を入れました。はい、私は準備文を試しましたが、それでも動作しません。 – Clyky

+0

接続は機能しますか? – chris85

答えて

0

問題を解決しました。私は$conn->commit()が見つかりませんでした。