Possible d'utiliser des instructions MySQLi multiples / imbriquées?
Question
Est-il possible d'avoir une instruction préparée par MySQLi
dans l'appel fetch ()
d'une instruction précédente? Si non, quel est le meilleur moyen de le contourner?
Exemple de code:
if($stmt = $link->prepare("SELECT item FROM data WHERE id = ?")) {
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($item);
while( $stmt->fetch() ) {
/* Other code here */
$itemSummary = $item + $magic;
if($stmt2 = $link->prepare("INSERT INTO summaries (itemID, summary) VALUES (?, ?)")) {
$stmt2->bind_param("is", $itemID, $itemSummary);
$stmt2->execute();
$stmt2->close();
}
}
}
La solution
Vous devriez pouvoir le faire, bien que vous deviez établir une deuxième connexion.
Autres conseils
Il s’agit de la connexion unique:
if($stmt = $link->prepare("SELECT item FROM data WHERE id = ?")) {
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->store_result(); // <-- this
$stmt->bind_result($item);
while( $stmt->fetch() ) {
/* Other code here */
$itemSummary = $item + $magic;
if($stmt2 = $link->prepare("INSERT INTO summaries (itemID, summary) VALUES (?, ?)")) {
$stmt2->bind_param("is", $itemID, $itemSummary);
$stmt2->execute();
$stmt2->store_result(); // <-- this
/*DO WHATEVER WITH STMT2*/
$stmt2->close();
}
}
}
Ou utilisez store_result
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow