Php 执行prepared Station但插入值时引发PDO异常

Php 执行prepared Station但插入值时引发PDO异常,php,mysql,pdo,Php,Mysql,Pdo,我使用PDO将值插入数据库。 我在配置文件中使用以下代码连接到我的数据库 define('USER', 'XX'); define('PASS', 'YY'); define('DSN', 'mysql:host=localhost;dbname=mydbtest;charset=utf8mb4'); try { $dbh = new PDO(DSN, USER, PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF

我使用PDO将值插入数据库。 我在配置文件中使用以下代码连接到我的数据库

define('USER', 'XX');
define('PASS', 'YY');
define('DSN', 'mysql:host=localhost;dbname=mydbtest;charset=utf8mb4');
try {
    $dbh = new PDO(DSN, USER, PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    print "Erreur ! : " . $e->getMessage() . "<br/>";
    die();
}
定义('USER','XX');
定义('PASS','YY');
定义('DSN','mysql:host=localhost;dbname=mydbtest;charset=utf8mb4');
试一试{
$dbh=新PDO(DSN、用户、过程、数组(PDO::MYSQL_ATTR_INIT_COMMAND=>“SET NAMES'UTF8'”);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
}捕获(PDO$e){
打印“Erreur!:”$e->getMessage()。“
”; 模具(); }
在一个单独的文件中,我检索$\u POST值,准备我的查询并按如下方式执行:

include_once('connect.inc.php');

try
{
    /***************** COMPANY DATA POST **************/

$entite_juridique = $_POST['entite_juridique'];
$enseigne_commerciale = $_POST['enseigne_commerciale'];
$raison_sociale = $_POST['raison_sociale'];
$adresse =  $_POST['street_number'] . " " . $_POST['route'];
$adresse2 = $_POST['adresse2'];
$cp = $_POST['cp'];// 75008 
$ville = $_POST['ville'];// Paris 
$country = $_POST['country'];// France 
$region = $_POST['region'];// Île-de-France 
$departement = $_POST['departement'];// Paris (75) 
$tel = $_POST['tel'];
$email = $_POST['email']; //aaaa@mail.com 
$website = $_POST['website'];
$categorie = $_POST['categorie'];
$facebook = $_POST['facebook'];
$twitter = $_POST['twitter'];
$google = $_POST['google'];
$siren = $_POST['siren'];
$lieu_immat = $_POST['lieu_immat'];
$capital = $_POST['capital'];
$description = $_POST['description'];
$status = $_POST['status'];

//$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO cc_a 
(entite_juridique, enseigne_commerciale, raison_sociale, adresse, adresse2, cp, ville,
 country, region, departement, tel , email, website, categorie, facebook, twitter, google,
 siren, lieu_immat, capital, description, status) 
VALUES (:entite_juridique, :enseigne_commerciale, :raison_sociale,:adresse, :adresse2,:cp,:ville, 
:country, :region,  :departement, :tel, :email, :website, :categorie, :facebook,:twitter, :google,
 :siren,:lieu_immat, :capital, :description, :status)";
    $sth = $dbh->prepare($sql);

    $sth->execute(array(':entite_juridique' => $entite_juridique,
                        ':enseigne_commerciale' => $enseigne_commerciale,
                        ':raison_sociale' => $raison_sociale,
                        ':adresse' => $adresse,
                        ':adresse2' => $adresse2,':cp' => $cp,
                        ':ville' => $ville,
                        ':country' => $country, 
                        ':region' => $region,
                        ':departement' => $departement,
                        ':tel' => $tel , 
                        ':email' => $email,
                        ':website' => $website,
                        ':categorie'=> $categorie,
                        ':facebook' => $facebook,
                        ':twitter' => $twitter,
                        ':google' => $google,
                        ':siren' => $siren,
                        ':lieu_immat' => $lieu_immat,
                        ':capital' => $capital,
                        ':description' => $description,
                        ':status' => $status ));

    $sth= $dbh->exec($sql);
    echo 'OK';
}
catch(Exception $e) //en cas d'erreur
{
    echo 'KO';
    echo 'Erreur : '.$e->getMessage().'<br />';
    echo 'N° : '.$e->getCode();
    exit();
}
include_once('connect.inc.php');
尝试
{
/*****************公司数据站**************/
$entite_juridique=$_POST['entite_juridique'];
$enseigne_commerciale=$_POST['enseigne_commerciale'];
$raisson_sociale=$_POST['raisson_sociale'];
$adresse=$邮政['street\u number']。“$”邮政['route'];
$adresse2=$_POST['adresse2'];
$cp=$_POST['cp'];//75008
$ville=$_POST['ville'];//巴黎
$country=$_POST['country'];//法国
$region=$_POST['region'];//法兰西
$department=$_POST['department'];//巴黎(75)
$tel=$_POST['tel'];
$email=$_POST['email']//aaaa@mail.com 
$website=$_POST['website'];
$categorie=$_POST['categorie'];
$facebook=$_POST['facebook'];
$twitter=$_POST['twitter'];
$google=$_POST['google'];
$siren=$_POST['siren'];
$liueu immat=$\u POST['liueu immat'];
$capital=$_POST['capital'];
$description=$_POST['description'];
$status=$_POST['status'];
//$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$sql=“插入到抄送中”
(整个司法、商业、社会存在、地址、地址2、cp、ville、,
国家、地区、部门、电话、电子邮件、网站、分类、facebook、twitter、谷歌、,
塞壬、利乌·伊马特、大写、描述、身份)
价值观(:整个司法,:商业,:社会存在,:adrese,:adresse2,:cp,:ville,
:国家,:地区,:部门,:电话,:电子邮件,:网站,:分类,:facebook,:twitter,:谷歌,
:siren,:liu_immat,:capital,:description,:status“;
$sth=$dbh->prepare($sql);
$sth->execute(数组(':entite_juridique'=>$entite_juridique,
“:Ensigne_commerciale”=>Ensigne_commerciale,
“:raison_sociale”=>$raison_sociale,
“:ADRESE”=>$ADRESE,
“:adresse2'=>$adresse2'”:cp'=>$cp,
“:ville”=>$ville,
“:country'=>$country,
':region'=>$region,
':department'=>$department,
':tel'=>$tel,
':email'=>$email,
“:website”=>$website,
':categorie'=>$categorie,
“:facebook”=>$facebook,
“:twitter”=>$twitter,
“:google”=>$google,
':siren'=>$siren,
“:liu_immat”=>liu_immat美元,
“:capital”=>$capital,
':description'=>$description,
':status'=>$status));
$sth=$dbh->exec($sql);
回声‘OK’;
}
捕获(例外$e)//en cas d'erreur
{
回声“KO”;
回显“Erreur:”。$e->getMessage()。
; 回显'N°:'。$e->getCode(); 退出(); }
问题是这些值插入得很好,但我得到了以下错误:

Erreur:SQLSTATE[42000]:语法错误或访问冲突:1064您 SQL语法有错误;检查相应的手册 您的MySQL服务器版本需要使用正确的语法 “:整个司法,:商业,:社会存在,:地址, :adrese2,:c'在第2行N°:42000处

我不明白为什么会出现错误并插入值。 注意:当我从配置文件中删除这个
$dbh->setAttribute时(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常)不重新分配错误

$sth= $dbh->exec($sql);
您已经使用
$sth->execute()
执行了准备好的查询

您正在通过运行
exec($sql)
第二次执行查询,而不绑定参数

禁用ERRMODE_异常时不会出现错误的原因是禁用了异常或PDO错误,您正在“捕获”。您的代码中没有任何地方可以查找错误消息,您的代码设置为捕获PDO在错误时引发的异常

如果禁用了ERRMODE_异常,然后执行如下操作:

if (!$dbh->exec($sql)) {
  print_r($dbh->errorInfo());
}
然后你会得到同样的错误