Php/Pdo插入不工作:语法错误?

Php/Pdo插入不工作:语法错误?,php,syntax,pdo,Php,Syntax,Pdo,我正在编写一些代码,使用PDO将一些数据输入mysql数据库。此代码有效(验证数据是否全部存在): 请你帮个忙,我知道我错过了一些愚蠢的事情 霍克斯顿您在:dobyear和:gender之间缺少一个逗号: $STH=$dbh->prepare(“插入用户(名字、姓氏、公司、职务、用户类型、地址、电子邮件、电话、手机、日期、月份、年份、性别、种族、密码、信用)值(:firstname,:lastname,:company,:jobtitle,:usertype,:address,:email,:电

我正在编写一些代码,使用PDO将一些数据输入mysql数据库。此代码有效(验证数据是否全部存在):

请你帮个忙,我知道我错过了一些愚蠢的事情


霍克斯顿

您在
:dobyear
:gender
之间缺少一个逗号:

$STH=$dbh->prepare(“插入用户(名字、姓氏、公司、职务、用户类型、地址、电子邮件、电话、手机、日期、月份、年份、性别、种族、密码、信用)值(:firstname,:lastname,:company,:jobtitle,:usertype,:address,:email,:电话,:mobile,:dobday,:dobmount,:dobyear:gender,:种族,:密码,:credits)”


不是要取代H2Oooo的精彩点评和回复,只是想说你可能会一次又一次地犯同样的错误。一种避免这种错误的方法是通过格式化代码使其更具可读性:

$STH = $dbh->prepare("INSERT INTO users (
  firstname
, lastname
, company
, jobtitle
etc
是的,这意味着更多的LOC,但它也会减少花在追查愚蠢错误上的时间,因为缺少前导逗号会让你从页面上跳下来

还有一个小小的好处是,您可以很容易地在页面上发现SQL语句


(是的,这是一条评论,不是答案,但这是我阐明我观点的唯一方式)

重定向到(formsuccess.php);
是无效代码。您要解析的是名为
formsuccess
的常量和名为
php
的常量。使用引号:
重定向到('formsuccess.php'));
@h2ooooo但这不会导致语法错误。您使用的是哪个版本的PHP?实际错误是什么?@joonty我知道-语法错误是一个缺少的逗号-这只是增加了问题。如果您正在将异常写入文本文件中-那么为什么不去查看其中的内容…?@joonty-Parse errors并不是无效代码可能导致的唯一问题。这个问题有点疯狂OP花费了大量精力来隐藏PHP XD生成的调试信息。值得注意的是,这些SQL语法错误会触发
PDOException
$e->getMessage()
显示了错误的确切原因。虽然原始代码使用了异常,但很明显OP并不能完全确定它们的用途。@ÁlvaroG.Vicario您将得到一个语法错误,不幸的是,“在
:dobyear
:gender
之间没有逗号。”。最好的情况是你得到一个行号,在这种情况下,行号是0或1(不记得它是否是0索引的)。我很感激这是对H2Ooooo极好答案的补充:这是每个人应该如何格式化他们的陈述以避免我遇到的问题。很高兴你欣赏它!Thx。
$STH = $dbh->prepare("INSERT INTO users (firstname, lastname, company, jobtitle, usertype, address, email, telephone, mobile, dobday, dobmonth, dobyear, gender, ethnicity, password, credits) values (:firstname, :lastname, :company, :jobtitle, :usertype, :address, :email, :telephone, :mobile, :dobday, :dobmonth, :dobyear :gender, :ethnicity, :password, :credits)");
$STH->bindParam(':firstname', $firstname);
$STH->bindParam(':lastname', $lastname);
$STH->bindParam(':company', $company);
$STH->bindParam(':jobtitle', $jobtitle);
$STH->bindParam(':usertype', $usertype);
$STH->bindParam(':address', $address);
$STH->bindParam(':email', $email);
$STH->bindParam(':telephone', $telephone);
$STH->bindParam(':mobile', $mobile);
$STH->bindParam(':dobday', $dobday);
$STH->bindParam(':dobmonth', $dobmonth);
$STH->bindParam(':dobyear', $dobyear);
$STH->bindParam(':gender', $gender);
$STH->bindParam(':ethnicity', $ethnicity);
$STH->bindParam(':password', $password);
$STH->bindParam(':credits', $credits);
try{
    $STH->execute();
    redirect_to(formsuccess.php);
    }
catch(PDOException $e) { 
    echo "I'm sorry, Dave. I'm afraid I can't do that.";  
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
    redirect_to(databaseentryfail.php); 

    }
$STH = $dbh->prepare("INSERT INTO users (
  firstname
, lastname
, company
, jobtitle
etc