PHP MYSQL更新语法错误

时间:2014-08-27 02:25:56

标签: php mysql sql-update

所以我有一个用于更新数据库的相当大的表单。我现在遇到这个从表单中插入数据的代码块时遇到了麻烦。以前它工作,但我改变了表格显示"打开"交易,以便用户知道要关闭的交易号。现在我遇到了语法/访问冲突。如果有人想知道,Rtransid是关键。谢谢你的帮助。

//If there are any errors, display the form again. Otherwise, insert the data
if(!count($errors)){
    $sql = "UPDATE repairorder SET
        date = :date, 
        tech = :tech,  
        dispatcher = :dispatcher,
        booth = :booth, 
        worktype = :worktype,  
        descript = :descript,
        comment = :comment, 
        fstop = :fstop,  
        devtemp = :devtemp,
        counter = :counter,
        numstrips = :numstrips, 
        fserial = :fserial,  
        status = :status,
        odate = :odate,
        cdate = :cdate,   
        WHERE rtransid = :rtransid";
$stmt = $db->prepare($sql);                                  
$stmt->bindParam(':rtransid', $_POST['rtransid'], PDO::PARAM_STR);       
$stmt->bindParam(':date', $_POST['date'], PDO::PARAM_STR);    
$stmt->bindParam(':tech', $_POST['tech'], PDO::PARAM_STR);
$stmt->bindParam(':dispatcher', $_POST['dispatcher'], PDO::PARAM_STR); 
$stmt->bindParam(':booth', $_POST['booth'], PDO::PARAM_STR);   
$stmt->bindParam(':worktype', $_POST['worktype'], PDO::PARAM_INT);   
$stmt->bindParam(':descript', $_POST['descript'], PDO::PARAM_STR);       
$stmt->bindParam(':comment', $_POST['$comment'], PDO::PARAM_STR);    
$stmt->bindParam(':fstop', $_POST['fstop'], PDO::PARAM_STR);
$stmt->bindParam(':devtemp', $_POST['devtemp'], PDO::PARAM_STR); 
$stmt->bindParam(':counter', $_POST['counter'], PDO::PARAM_STR);   
$stmt->bindParam(':numstrips', $_POST['numstrips'], PDO::PARAM_STR); 
$stmt->bindParam(':fserial', $_POST['fserial'], PDO::PARAM_STR);   
$stmt->bindParam(':status', $_POST['status'], PDO::PARAM_STR); 
$stmt->bindParam(':odate', $_POST['odate'], PDO::PARAM_STR);   
$stmt->bindParam(':cdate', $_POST['cdate'], PDO::PARAM_INT);   
//var_dump($stmt); //used for error control in dummy server
$stmt->execute(); 
}

1 个答案:

答案 0 :(得分:0)

如果错误消息看起来像You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE rtransid = ...' at line 1,则应该更新您的查询。

$sql = "UPDATE repairorder SET
        date = :date, 
        tech = :tech,  
        dispatcher = :dispatcher,
        booth = :booth, 
        worktype = :worktype,  
        descript = :descript,
        comment = :comment, 
        fstop = :fstop,  
        devtemp = :devtemp,
        counter = :counter,
        numstrips = :numstrips, 
        fserial = :fserial,  
        status = :status,
        odate = :odate,
        cdate = :cdate   
        WHERE rtransid = :rtransid";

您可能会错过:cdate

之后的逗号