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

时间:2016-05-15 09:13:21

标签: php mysql pdo

我使用下面的代码段,但收到以下错误。不确定,发生了什么事。我试图打印所有内容,它显示正常。我试着寻找缺失的牙套,没有运气。我错过了什么吗?

  

错误: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);

1 个答案:

答案 0 :(得分:1)

我假设您不打算将ddatedocsreq组合在一起:

:ddate :docsreq

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

:ddate, :docsreq