Php i';我无法使用PDO插入数据库
我试图使用PDO将数据插入数据库,但我遇到了这个错误 致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解在C:\xampp\htdocs\pfe\users\execute.php:21堆栈跟踪:#0 C:\xampp\htdocs\pfe\users\execute.php(21):PDOStatement->execute()#1{main}中的第1行的“”附近使用的正确语法 这是我的代码:Php i';我无法使用PDO插入数据库,php,pdo,mariadb,Php,Pdo,Mariadb,我试图使用PDO将数据插入数据库,但我遇到了这个错误 致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解在C:\xampp\htdocs\pfe\users\execute.php:21堆栈跟踪:#0 C:\xampp\htdocs\pfe\users\execute.php(21):PDOStatement->execute()#1{main}中的第1行的“”附近使用的
<?php
session_start();
require_once("database.php");
$req = $dbh ->prepare('INSERT INTO idad
(etat, description, image, localisation,
statut, categorie, author_num, created_at)
VALUES(:etat, :description, :image, :localisation,
:statut, :categorie, :author_num, NOW() ');
$req ->bindParam(':etat' , $_POST["etat"]);
$req ->bindParam(":description" , $_POST["description"]);
$req ->bindParam(":image" , $_POST["image"]);
$req ->bindParam(":localisation" , $_POST["localisation"]);
$req ->bindParam(":statut" , $config['STATUS'][0]);
$req ->bindParam(":categorie" , $_POST["categorie"]);
$req ->bindParam(":author_num" , $_SESSION["id"]);
$req ->execute();
var_dump($_POST);
var_dump($_SESSION);
var_dump($config);
?>
您是否尝试了以下操作,而不是使用多行bindParam:
$req -> execute(array(
':param1' => $my_param1,
':param2' => $my_param2,
':param3' => $my_param3,
));
我不确定你的解决方案是否有效,只是我总是按照我的方式做,因为有人建议我这样做,如果我是对的,出于安全目的(仍在学习)
另外,我的代码可能会更清晰,如果我说的没错,您的代码不会验证您的$\u POST变量不是未定义的或空的,因此可能有一天会导致问题。您缺少一个关闭的
)
中的,NOW()')
SoNOW())代码>谢谢你这个问题已经解决了,但是还有一个问题我可以得到一些帮助这就是问题致命错误:未捕获PDOException:SQLSTATE[23000]:完整性约束冲突:1048列“author_num”在C:\xampp\htdocs\pfe\users\execute.php:21堆栈跟踪:#0 C:\xampp\htdocs\pfe\users\execute.php(21):PDOStatement->execute()#1{main}在第21行的C:\xampp\htdocs\pfe\users\execute.php中抛出
这表明,$\u SESSION[“id”]
为空,您不认为它不是空的,但它是从另一个表导入的吗我不知道为什么它不起作用您的方式和bindParam没有区别,只是语法不同,结果是相同的