MYSQL错误-SQLSTATE[42000]:语法错误或访问冲突


MYSQL Error - SQLSTATE[42000]: Syntax error or access violation

我使用了下面的代码片段,但得到了下面的错误。不确定,发生了什么事。我试着把所有东西都打印出来,结果显示得很好。我试着找丢失的牙套,但没找到。我是不是错过了什么?

错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,了解在第3行的"、"、"、",NOW())"附近使用的正确语法

 

$name=$_POST['name'];//name
$nationality = $_POST['nationality'];//nationality
$vtype=$_POST['vtype'];//Visa type
$vcenter=$_POST['vcenter'];//Embassy Consulate 
$vintdate=$_POST['vintdate'];//Visa Interview Date
$status=$_POST['status'];//status
$pstatus=$_POST['pstatus'];// Passport status
$ddate=$_POST['ddate'];//consulate decision date
$slipcolor = $_POST['slipcolor']; // Slip Color
$docsreq = $_POST['docsreq'];//documents required by consulate
$docsub = $_POST['docsub'];//documents submitted to consulate
$dsub_date = $_POST['dsub_date'];//document submitted Date
$extra_notes = $_POST['extra_notes'];// extra notes
if(empty($ddate))
    $ddate=NULL;
if(empty($dsub_date))
    $ddate=NULL;
echo "name : ".$name;
echo "nationality : ".$nationality;
echo "vtype : ".$vtype;
echo "vcenter : ".$vcenter;
echo "vintdate : ".$vintdate;
echo "status : ".$status;
echo "pstatus : ".$pstatus;
echo "ddate : ".$ddate;
echo "slipcolor : ".$slipcolor;
echo "docsreq : ".$docsreq;
echo "docsub : ".$docsub;
echo "dsub_date : ".$dsub_date;
echo "extra_notes : ".$extra_notes;

// $sql = "INSERT INTO 221gtracker (`userid`,`name`, `nationality`, `vtype`, `vcenter`, `vintdate`, `status`, `slipcolor`,`pstatus`,`ddate`,`docsreq`, `docsub`,`dsub_date`, `extra_notes`, `u_time`) 
//      VALUES 
//          (:userid, :name ,:nationality,:vtype, :vcenter, :vintdate, :status, :slipcolor, :pstatus,:ddate :docsreq, :docsub, :dsub_date,:extra_notes, NOW()) 
//                  ON DUPLICATE KEY UPDATE 
//                  status=:status_update,
//                  ddate=:ddate_update,
//                  docsreq=:docsreq_update,
//                  docsub=:docsub_update,
//                  dsub_date=:dsub_date_update,
//                  extra_notes=:extra_notes_update";
$sql = "INSERT INTO 221gtracker (`userid`,`name`, `nationality`, `vtype`, `vcenter`, `vintdate`, `status`, `slipcolor`,`pstatus`,`ddate`,`docsreq`, `docsub`,`dsub_date`, `extra_notes`, `u_time`) 
VALUES 
(:userid, :name ,:nationality,:vtype, :vcenter, :vintdate, :status, :slipcolor, :pstatus,:ddate :docsreq, :docsub, :dsub_date,:extra_notes, NOW())";
$s = $pdo->prepare($sql);
$s->bindValue(':userid', $userid);
$s->bindValue(':name', $name);
$s->bindValue(':nationality', $nationality);
$s->bindValue(':vtype', $vtype);
$s->bindValue(':vcenter', $vcenter);
$s->bindValue(':vintdate', $vintdate);
$s->bindValue(':status', $status);
$s->bindValue(':slipcolor', $slipcolor);
$s->bindValue(':pstatus', $pstatus);
$s->bindValue(':ddate', $ddate);
$s->bindValue(':docsreq', $docsreq);
$s->bindValue(':docsub', $docsub);
$s->bindValue(':dsub_date', $dsub_date);
$s->bindValue(':extra_notes', $extra_notes);

我假设您无意将ddatedocsreq组合在一起:

:ddate :docsreq

你可能应该在它们之间加一个逗号。

:ddate, :docsreq