希望有人能够帮助我,因为我整个晚上都在用头撞墙试图解决这个小问题。
我想使用 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
,而没有在我的数据库中输入任何内容。我已经尝试了所有我能想到的对语句的组合更改,但我仍然不知所措。
我希望有人能指出我犯的一个非常简单的错误。
此外,在 $sql
字符串中的参数 :user-id
周围放置单引号是我可以让任何内容出现在数据库中的唯一方法,但这显然不会将任何实际数据输入数据库。
编辑
我还将 PDO 参数类型从 PDO::PARAM_STR
更改为 PDO::PARAM_INT
但仍然没有运气。
经过进一步调查,execute()
返回 FALSE
。
解决方案 感谢大家的指导。 @Nabeel 说不要在 PDO 参数中使用占位符是正确的。
最佳答案
不要在 SQL 语句中使用破折号。
做这个:
:user-id
如下:
:userid
关于php - PDO 未插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5611297/