bind_param en brackets
Met mysql werkte het prima, maar probeer het nu om te vormen naar mysqli.
Maar kom er niet helemaal uit.
Ik denk dat het komt door de brackets, maar kan op internet niet echt vinden of dit wel of niet mag.
Ik heb geprobeerd er een gewone varibel van te maken, maar dat maakt geen verschil in de foutmelding.
Foutmelding:
Fatal error: Cannot pass parameter 3 by reference in ***
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for($i=0; $i<count($_POST['product']); $i++)
{
if(is_numeric($_POST['aantal'][$i]) and $_POST['aantal'][$i]>0)
{
$stmt = $connection->prepare("
INSERT INTO
podium_berekening_onderdelen
SET
berekening_kenmerk = ?,
berekening_product = ?,
berekening_aantal = ?,
berekening_soort = ?
");
$stmt->bind_param('ssis', $kenmerk, $_POST['product'][$i], $_POST['aantal'][$i], $_POST['soort'][$i]);
$stmt->execute();
$stmt->close();
}
}
{
if(is_numeric($_POST['aantal'][$i]) and $_POST['aantal'][$i]>0)
{
$stmt = $connection->prepare("
INSERT INTO
podium_berekening_onderdelen
SET
berekening_kenmerk = ?,
berekening_product = ?,
berekening_aantal = ?,
berekening_soort = ?
");
$stmt->bind_param('ssis', $kenmerk, $_POST['product'][$i], $_POST['aantal'][$i], $_POST['soort'][$i]);
$stmt->execute();
$stmt->close();
}
}
Gewijzigd op 12/07/2015 04:57:17 door J C
INSERT INTO table(col1, col2, col3) VALUES (val1, val2, val3)
en
UPDATE table SET col1=val1, col2=val2, col3=val3 WHERE conditions.
Jij combineert in bovenstaande varianten de syntax van een INSERT en een UPDATE statement, dat gaat natuurlijk niet werken.
Ook zou je execute statement false moeten teruggeven als je query niet slaagt.
Als alternatief, en wellicht beter, zou je de instelling PDO::ATTR_ERROR_MODE de waarde PDO::ERRMODE_EXCEPTION kunnen geven zodat elke fout resulteert in een exception. Als je dan vervolgens alles in een try-catch blok zet kun je deze fouten op- of afvangen.
Schrijf code zodat je deze ook makkelijk kunt debuggen.
Misschien de volgende keer ook gewoon gaan slapen, dit is wel een heel erg domme fout. Bedankt voor de hulp.