Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

pdo lastInsertId शून्य लौटाता है (0)

PDO_MySQL के साथ हमें उपयोग करना चाहिए

$DB->setAttribute(PDO::ATTR_EMULATE_PREPARES,TRUE); // there are other ways to set attributes. this is one

ताकि हम कई क्वेरी चला सकें जैसे:

$foo = $DB->prepare("SELECT * FROM var_lst;INSERT INTO var_lst (value) VALUES ('durjdn')");

लेकिन दुख की बात है कि ऐसा करने से $DB को सही इंसर्ट आईडी वापस करने से राहत मिलती है। सम्मिलित आईडी को पुनः प्राप्त करने में सक्षम होने के लिए आपको उन्हें अलग से चलाना होगा। यह सही इंसर्ट आईडी लौटाता है:

$DB->setAttribute(PDO::ATTR_EMULATE_PREPARES,TRUE);
$foo = $DB->prepare("INSERT INTO var_lst (value) VALUES ('durjdn')");
$foo->execute();
echo $DB->lastInsertId();

लेकिन ऐसा नहीं होगा:

$DB->setAttribute(PDO::ATTR_EMULATE_PREPARES,TRUE);
$foo = $DB->prepare("SELECT * FROM var_lst;INSERT INTO var_lst (value) VALUES ('durjdn')");
$foo->execute();
echo $DB->lastInsertId();

और यह दो प्रश्नों को भी नहीं चलाएगा:

$DB->setAttribute(PDO::ATTR_EMULATE_PREPARES,FALSE); // When false, prepare() returns an error
$foo = $DB->prepare("SELECT * FROM var_lst;INSERT INTO var_lst (value) VALUES ('durjdn')");
$foo->execute();
echo $DB->lastInsertId();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. IOS में amazon RDS कैसे कनेक्ट करें

  2. बाइनरी टैरबॉल से MySQL 8 सेट करें

  3. अज्ञात कॉलम '' 'फ़ील्ड सूची' में। जैंगो

  4. jQuery स्वत:पूर्ण (रिमोट) - उदाहरण

  5. एक अद्यतन का उपयोग करके एकाधिक कॉलम सेट करना