Php PDO未插入到数据库中
希望有人能帮助我,因为我整晚都在努力解决这个小问题 我想使用PDO将数据插入数据库(无可否认,我对PDO不是最了解的)。我在使用一个我在过去使用过很多次的语句,但由于某种原因,这次它不起作用。声明如下:Php PDO未插入到数据库中,php,mysql,insert,pdo,Php,Mysql,Insert,Pdo,希望有人能帮助我,因为我整晚都在努力解决这个小问题 我想使用PDO将数据插入数据库(无可否认,我对PDO不是最了解的)。我在使用一个我在过去使用过很多次的语句,但由于某种原因,这次它不起作用。声明如下: $userID = "Johnny5"; $sql = "INSERT INTO user_info(user_id) VALUES(:user-id)"; if($stmt = $this->_db->prepare($sql)) {
$userID = "Johnny5";
$sql = "INSERT INTO user_info(user_id) VALUES(:user-id)";
if($stmt = $this->_db->prepare($sql))
{
$stmt->bindParam(":user-id", $userID, PDO::PARAM_STR);
$stmt->execute();
$stmt->closeCursor();
return TRUE;
} else {
return FALSE;
}
但不幸的是,这总是返回TRUE
,而从未在我的数据库中输入任何内容。我已经尝试了我所能想到的每一个组合的变化,但是我仍然不知所措
我希望有人能指出我犯的一个非常简单的错误
此外,在$sql
字符串中的参数:user id
周围加上单引号是我可以将任何内容显示到数据库中的唯一方法,但这显然不会将任何实际数据输入到数据库中
编辑
我还将PDO参数类型从PDO::PARAM_STR
更改为PDO::PARAM_INT
,但仍然运气不佳
进一步调查后,execute()
返回FALSE
解决方案
感谢大家的指导@Nabeel说不要在PDO参数中使用占位符是正确的。
$userId
是此代码中的字符串,但您通过定义PDO::PARAM_int
说它是int。尝试将其替换为PDO::PARAM_STRING
或尝试将$userId
设置为一个数字(例如1)如果某个操作失败,则肯定是错误。首先,您需要通过检查返回值来找出哪个语句失败(请务必先阅读PHP手册中使用的每个命令)
如果找到了失败的命令,请使用查找有关具体错误的更多信息
这些信息应该能帮助你解决问题
更新:如果要处理异常(如Pekka建议的那样):不要在SQL语句中使用破折号 这样做:
:user-id
因此:
:userid
抱歉,这是我尝试的另一件事-最初我将参数设置为str,我将在上面进行编辑以反映这一点。好的catch.PDOStatement->bindParam在成功时返回TRUE,在失败时返回FALSE。PDOStatement->execute在成功时返回TRUE,在失败时返回FALSE。您可以通过检查返回值来找出哪个命令失败。您是否尝试放置:error\u reporting(E\u ALL);ini设置(“显示错误”,1);在你的脚本之上?@hakre我已经确定了execute(),失败似乎在哪里be@teuneboon,是的,错误报告已按照您的建议设置,但我没有收到进一步的警告。谢谢您的指导。希望我能解决这个问题。如果它成为解决方案,我将发布。我最终能够使用错误报告来引导我得出相同的结论。要是你早点来就好了@Nabeel。哦,好吧,迟做总比不做强:)我真希望你一发帖我就在这里。