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();