2016-12-22 3 views
0

Gefallen Sie diese meine gU Aussage richtig arbeitet:Wie kann ich mehrere Prepare-Anweisungen (mysql, PDO) verwenden?

$pdo = $db->prepare("UPDATE animals SET name =? WHERE id=LAST_INSERT_ID();"); 
$pdo->execute(array($name)); 

Wenn ich mehr vorbereiten Aussagen verwenden, wird die UPDATE-Anweisung nicht mehr funktioniert:

$pdo = $db->prepare('INSERT INTO animals (age) values(:age)'); 
$pdo->execute(array(':age' => $_POST['age'],)); 

$pdo = $db->prepare('INSERT INTO people (name) values(:name)'); 
$pdo->execute(array(':name' => $_POST['name'],)); 

$pdo = $db->prepare("UPDATE animals SET age =? WHERE id=LAST_INSERT_ID();"); 
$pdo->execute(array($age)); 

Aber jetzt Aussage meiner „update“ ist nicht arbeitet mehr.

+1

Wie wäre es mit verschiedenen Variablennamen? '$ stmt1' '$ stmt2'. Und 'close()' die Statements nach der Verwendung. – JustOnUnderMillions

+0

Ich habe versucht, die Variablen $ pdo1 und $ pdo2 zu verwenden, aber ich bekomme eine SQL-Fehlermeldung 'Undefined variable' – Jarla

+0

Nein, tut mir leid, ich habe einen Fehler gemacht, es funktioniert mit $ pdo1 und $ pdo2 – Jarla

Antwort

0
$stmt1 = $db->prepare('INSERT INTO people (name) values(:name)'); 
$stmt1->execute(array(':name' => $_POST['name'],)); 

$stmt2 = $db->prepare("UPDATE animals SET name =? WHERE id=LAST_INSERT_ID();"); 
$stmt2->bindParams(1,$name); 
$stmt2->execute(); 

//did you now that you can do this 
//$name='newvalue'; 
//$stmt2->execute(); 
//$name='nextvalue'; 
//$stmt2->execute(); 
+0

Wie unterscheidet es sich von dem OP? –

+0

Für jeden, der betrogen werden könnte: Diese Antwort ist ein Betrug. Jonglieren mit Variablennamen hat nichts zu tun. –

+1

@Ihr Common Sense Schauen Sie, was das OP im obigen Kommentar sagt. :-) – JustOnUnderMillions