Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php i';我无法使用PDO插入数据库_Php_Pdo_Mariadb - Fatal编程技术网

Php i';我无法使用PDO插入数据库

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行的“”附近使用的

我试图使用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()')
So
NOW())谢谢你这个问题已经解决了,但是还有一个问题我可以得到一些帮助这就是问题
致命错误:未捕获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没有区别,只是语法不同,结果是相同的