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()列で自動生成された ID のみを返しAUTO_INCREMENTます。あなたPRIMARY KEYは明らかに文字列です(または少なくとも文字列を挿入しています)。既知の値を挿入しているので、挿入された ID を実際に調べる必要はありません。自分で指定したからです。

于 2012-06-22T13:11:51.800 に答える
5

にはデータベースに属性useridがないため、有用なものは返されません。auto_incrementlastInsertId()

lastInsertId()あなたのフィールドが次の場合にのみ可能です。

  1. 主キー
  2. ヌルではない
  3. 整数型 (int、bigint など)
  4. 自動増加
于 2012-06-22T13:11:06.250 に答える
0

まず、挿入クエリを確認する必要があります。

適切に実行される場合は、mysql_insert_id() などの mysql 関数を使用します。

この関数が run プロパティの場合、 $dbh->lastInsertId() を間違える可能性があります

この機能。

于 2012-06-22T13:07:08.977 に答える