php - PDO 未插入数据库

标签 php mysql insert 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,而没有在我的数据库中输入任何内容。我已经尝试了所有我能想到的对语句的组合更改,但我仍然不知所措。

我希望有人能指出我犯的一个非常简单的错误。

此外,在 $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/

相关文章:

PHP - 如何获得 token ?

mysql - sql中的主键

php - mySQL - 是否有更好的方法在查询中使用多个 OR 运算符?

mysql - 如何将 CONTAINS 与 CURDATE 一起使用?

c++ - 如何将菜单从资源插入到现有菜单?

php - mySQL with php function - 使用php循环输入数据

PHP 检查变量 isset、empty、define 等

java - 使用JPA持久化时是否需要设置实体类的所有字段?

mysql - Kohana - 插入记录忽略重复

php - 将 php 数组转换为 python 字典