希望有人能够帮助我,因为我整夜都在试图解决这个小问题。PDO没有插入到数据库中
我想插入数据到数据库使用PDO(我承认,不是最了解)。我正在使用过去多次使用过的声明,但由于某种原因,这次无法使用。声明如下:
$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
而没有输入任何内容到我的数据库。我尝试了所有我能想到的声明的组合变化,但我仍然处于亏损状态。
我希望有人可以指出我犯的一个非常简单的错误。
此外,在参数:user-id
的$sql
字符串周围放置单引号是我可以获得任何内容出现在数据库中的唯一方式,但显然不会将任何实际数据输入到数据库中。
编辑 我也改变了PDO参数类型从PDO::PARAM_STR
到PDO::PARAM_INT
但仍然没有运气。
经过进一步调查,正在返回FALSE
。
解决方案 感谢大家的指导。 @Nabeel说在PDO参数中不使用占位符是正确的。
PDOStatement-> bindParam返回TRUE或FALSE的成功失败。 PDOStatement-> execute在成功时返回TRUE,在失败时返回FALSE。您可以通过检查返回值来找出哪个命令失败。 – hakre 2011-04-10 11:09:43
您是否尝试过放置:error_reporting(E_ALL); ini_set('display_errors',1);在脚本的顶部? – teuneboon 2011-04-10 11:10:01
@hakre我已经确定execute()的失败似乎是 – ServAce85 2011-04-10 11:19:25