2016-12-22 39 views
0

像這樣我的PDO語句正常工作:如何使用多個準備語句(mysql,PDO)?

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

如果我使用更多的準備語句,UPDATE語句是不工作了:

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

但現在我的「更新」說法是不工作了。

+1

如何給不同的變量名稱? '$ stmt1''$ stmt2'。並在使用它後關閉()。 – JustOnUnderMillions

+0

我試圖使用變量$ pdo1和$ pdo2,但我得到一個sql錯誤消息'未定義的變量' – Jarla

+0

不,我錯了,它正在與$ pdo1和$ pdo2 – Jarla

回答

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

它與OP有什麼不同? –

+0

對於任何可能被欺騙的人:這個答案是欺詐行爲。與變量名稱雜耍不會影響任何內容。 –

+1

@你的常識看看OP在上面的評論中說了些什麼。 :-) – JustOnUnderMillions