Umiddelbart synes jeg at det observerede virker meget logisk.
#2
$stmt = $mysqli->prepare('SELECT id, navn, stilling, rolle FROM liste WHERE userid = ? AND postnr = ?');
$stmt_inner = $mysqli->prepare('INSERT INTO valg (id, navn, stilling, rolle, bruger, postnr) VALUES(?,?,?,?,?,?)');
$stmt->bind_param('ii', $userid, $postnr);
$stmt->execute(); // skriv SQL til forbindelse og læs status fra forbindelse
$stmt->bind_result($id, $navn, $stilling, $rolle);
while ($row = $stmt->fetch_array(MYSQLI_BOTH)) { // læs enkelt række fra forbindelse
$stmt_inner->bind_param('isssii', $id, $navn, $stilling, $rolle, $userid, $postnr);
$stmt_inner->execute(); // skriv SQL til forbindelse og læs status fra forbindelse
}
$stmt_inner->close();
$stmt->close();
Forsøge at skrive/læse til/fra samme forbindelse for 2 SQL sætninger samtidigt => problem
#9
$stmt = $mysqli->prepare('SELECT id, navn, stilling, rolle FROM liste WHERE userid = ? AND postnr = ?');
$stmt_inner = $mysqli->prepare('INSERT INTO valg (id, navn, stilling, rolle, bruger, postnr) VALUES(?,?,?,?,?,?)');
$stmt->bind_param('ii', $userid, $postnr);
$stmt->execute();// skriv SQL til forbindelse og læs status fra forbindelse
$res = $stmt->get_result(); // læs alle rækker fra forbindelse
$a = array();
while ($row = $res->fetch_array(MYSQLI_ASSOC)) {
$a[] = row;
}
$res->free();
$stmt->close();
foreach ($a as $row) {
$stmt_inner->bind_param('isssii', $row['id'], $row['navn'], $row['stilling'], $row['rolle'], userid, $postnr);
$stmt_inner->execute(); // skriv SQL til forbindelse og læs status fra forbindelse
}
$stmt_inner->close();
Intet overlap => intet problem.
#12
$stmt = $mysqli->prepare('SELECT id, navn, stilling, rolle FROM liste WHERE userid = ? AND postnr = ?');
$stmt_inner = $mysqli->prepare('INSERT INTO valg (id, navn, stilling, rolle, bruger, postnr) VALUES(?,?,?,?,?,?)');
$stmt->bind_param('ii', $userid, $postnr);
$stmt->execute(); // skriv SQL til forbindelse og læs status fra forbindelse
$res = $stmt->get_result(); // læs alle rækker fra forbindelse
while ($row = $res->fetch_array(MYSQLI_ASSOC)) {
$stmt_inner->bind_param('isssii', $row['id'], $row['navn'], $row['stilling'], $row['rolle'], userid, $postnr);
$stmt_inner->execute(); // skriv SQL til forbindelse og læs status fra forbindelse
}
$res->free();
$stmt->close();
$stmt_inner->close();
Intet overlap => intet problem.
Med denne forklaring vil der også være en tredie løsning på problemet, nemlig at have 2 forbindelser!