sql >> Database >  >> RDS >> Mysql

pdo lastInsertId retourneert nul (0)

Met PDO_MySQL moeten we

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

zodat we meerdere zoekopdrachten kunnen uitvoeren, zoals:

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

maar helaas, dit ontlast de $DB van het retourneren van de juiste insert-ID. U zou ze afzonderlijk moeten uitvoeren om de invoeg-ID te kunnen ophalen. Dit geeft de juiste invoeg-ID terug:

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

maar dit zal niet:

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

en dit zal niet eens de twee zoekopdrachten uitvoeren:

$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. MYSQL if statement vraag

  2. Hoe INTERSECT werkt in PostgreSQL

  3. Hoe MySQL Workbench op Windows te installeren

  4. Dubbele JOIN met dezelfde tafel twee keer