4

我有以下代码用于使用 PDO 将数据插入数据库。

它将数据插入数据库,但不返回最后插入的 ID。

userid是主键

  try {
        $dbh = new PDO('mysql:host=localhost;dbname=crud_demo', "username", "password");

        $sqlQuery = "INSERT INTO users(userid,first_name,last_name,email,password)
            VALUES(:userid,:first_name,:last_name,:email,:password)";

        $statement = $dbh->prepare($sqlQuery);
        $bind = array(
            ":userid" => "bhavik",
            ":first_name" => "Bhavik",
            ":last_name" => "Patel",
            ":email" => "bhavitk@live.in",
            ":password" => "1234567"
        );
        $statement->execute($bind);
        echo $dbh->lastInsertId();
    } catch (PDOException $e) {
        echo $e->getMessage();
    }

$dbh->lastInsertId();无论我为用户 ID 插入什么值,总是返回 0

4

3 回答 3

10

lastInsertId()AUTO_INCREMENT仅返回在列中自动生成的 ID 。您PRIMARY KEY显然是一个字符串(或者至少您在其中插入了一个字符串)。由于您要插入一个已知值,因此您实际上不需要找出插入的 ID — 您自己指定了它。

于 2012-06-22T13:11:51.800 回答
5

您的数据库userid中没有auto_increment属性,因此lastInsertId()永远不会返回任何有用的东西。

只有lastInsertId()当您的领域是:

  1. 主键
  2. 不为空
  3. 整数类型(int、bigint 等)
  4. 自动递增
于 2012-06-22T13:11:06.250 回答
0

首先你需要检查插入查询。

如果运行正常,则使用 mysql_insert_id() 之类的 mysql 函数。

如果这个函数是运行属性,那么你的 $dbh->lastInsertId() 可能会出错

这个功能。

于 2012-06-22T13:07:08.977 回答