2017-09-24 8 views
-1

私は、post_dataという1つのテーブルを持っています。その中で、私はセッション変数に基づいてカラムを更新したいと思います。php pdoのセッション変数でテーブルを更新するには?

これは私のクエリです。キャッチされないPDOException:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064

$id = $_SESSION['userSession']; 

$stmt = $user_home->runQuery("UPDATE post_data 
             set 
             cam_name='$cname', 
             cam_model ='$model', 
             cam_rent='$rent', 
             cam_img='$upic', 
             mobile='$umob' 
             upd_date='$jdate' 
             where userID='$id' 
             "); 

     $stmt->bindParam(':cname',$camname); 
     $stmt->bindParam(':model',$modelname); 
     $stmt->bindParam(':rent',$rentpday); 
     $stmt->bindParam(':upic',$userpic); 
     $stmt->bindParam(':umob',$usermob); 
     $stmt->bindParam(":jdate",$upd_date); 

     if($stmt->execute()) 
     { 

      $successMSG = "Record saved success"; 
     } 
     else 
     { 
      $errMSG = "error while inserting...."; 
     } 

これはによってRunQuery()私はこの

致命的なエラーのようなエラーが発生しました

public function runQuery($sql) 
{ 
    $stmt = $this->conn->prepare($sql); 
    return $stmt; 
} 

USERクラスの実装ですSQL構文にエラーがあります。正しい構文がMar'DBサーバーのバージョンに対応していないか確認してください。 'upd_date =' 2017-09-24 21:29:18 'のところで' C:\ xampp \ htdocs \ DSLR_proj \ profile.phpの8行目:97

答えて

0

,mobile='$umob'の直後にありません。

また、$cnameは同じ:cnameではありません。タイプミスを避けるために、特定の文字列の代わりに?というプレースホルダを使用することをお勧めします。

また、userID列のバインディングがありません。

UPDATE post_data 
     set cam_name=?,cam_model =?, cam_rent=?, cam_img=?, mobile=?, upd_date=? 
     where userID=? 

    $stmt->bindParam(1,$camname); 
    $stmt->bindParam(2,$modelname); 
    $stmt->bindParam(3,$rentpday); 
    $stmt->bindParam(4,$userpic); 
    $stmt->bindParam(5,$usermob); 
    $stmt->bindParam(6,$upd_date); 
    $stmt->bindParam(7,$id); // you are missing this as well 
+0

おかげでたくさん –

+0

屋それが動作おかげで...あなたは私が名前付きパラメータを好む答え –

+0

作業@Ravi感謝。はい、タイプミスの潜在的な問題があるだけでなく、位置パラメータでも、間違った順序でパラメータを取得したことは容易ではありません。 '3、$ modelname'は':rent、$ modelName'とデバッグするのが簡単ではありません。 – Ravi

関連する問題