0

これはテーブルスキーマです:

CREATE TABLE `USERS` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(30) DEFAULT '',
  `first_name` varchar(15) DEFAULT '',
  `last_name` varchar(15) DEFAULT '',
  `password` varchar(15) DEFAULT '',
  `gender` int(1) DEFAULT '-1',
  PRIMARY KEY (`id`)
)   

PHPで:

    $sql = 'INSERT INTO Users (email, first_Name, last_Name, password, gender ) VALUES                ("'.$email.'", "'.$first_name.'", "'.$last_name.'", "'.$password.'", '.$gender.')';

try {
    $db = getConnection();
    $stmt = $db->prepare($sql);  
    $stmt->execute();
    //$user = $stmt->fetchObject();
    echo 'last id was '.mysql_insert_id();

    $db = null;


    } catch(PDOException $e) {
            echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }

mysql_insert_id()が0を返す理由がわかりません。実行中の他のプロセスはありません。idは自動インクリメントに設定されています。挿入が行われ、dbに表示されます。

4

1 に答える 1

8

PDOデータベースとのインターフェースに使用しています。PDO::lastInsertId()最後に挿入されたIDを取得するために使用します。

$stmt->execute();
echo 'last id was ' . $db->lastInsertId();

mysql_insert_id()ext/mysql拡張機能の一部です。両方の拡張機能の機能を組み合わせて、同じ接続でインターフェースすることはできません。

于 2012-05-17T01:43:53.920 に答える