2016-12-22 3 views
0

Как это мое п.д.о. заявление работает хорошо:Как я могу использовать несколько операторов подготовки (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'. И 'close()' statments после его использования. – JustOnUnderMillions

+0

Я попытался использовать переменные $ pdo1 и $ pdo2, но я получаю сообщение об ошибке sql 'Undefined variable' – 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

Смежные вопросы