PDO stukje werkt niet zoals ik wil.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO metingen (Datum, Tijd, Product, Prod_Nr, Batch_Nr, Orders, Lijn, FP, PeroxideType, PeroxideProcent, FlakeA, FlakeSiloA, FlakeB, FlakeSiloB, AggloProcent, AggloSilo, RecycleProcent, RecycleSilo, MVRml10ml, MVRSTD, MFRg10ml, AshProcent, VochtProcent, KleurL, KleurA, KleurB, Operator1, FlakeType1, FlakeType2, Productielijn1, Productielijn2, FlakeBatchNr1, FlakeBatchNr2, FlakeVochtProcent1, FlakeVochtProcent2, FlakeKleurL1, FlakeKleurL2, FlakeKleurA1, FlakeKleurA2, FlakeKleurB1, FlakeKleurB2, Remark1, Remark2, MeltDens) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$q = $pdo->prepare($sql);
$q->execute(array( $Datum, $Tijd, $Product, $Prod_Nr, $Batch_Nr, $Orders, $Lijn, $FP, $PeroxideType, $PeroxideProcent, $FlakeA, $FlakeSiloA, $FlakeB, $FlakeSiloB, $AggloProcent, $AggloSilo, $RecycleProcent, $RecycleSilo, $MVRml10ml, $MVRSTD, $MFRg10ml, $AshProcent, $VochtProcent, $KleurL, $KleurA, $KleurB, $Operator1, $FlakeType1, $FlakeType2, $Productielijn1, $Productielijn2, $FlakeBatchNr1, $FlakeBatchNr2, $FlakeVochtProcent1, $FlakeVochtProcent2, $FlakeKleurL1, $FlakeKleurL2, $FlakeKleurA1, $FlakeKleurA2, $FlakeKleurB1, $FlakeKleurB2, $Remark1, $Remark2, $MeltDens));
Database::disconnect();
header("Location: indexnew2019.php");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO metingen (Datum, Tijd, Product, Prod_Nr, Batch_Nr, Orders, Lijn, FP, PeroxideType, PeroxideProcent, FlakeA, FlakeSiloA, FlakeB, FlakeSiloB, AggloProcent, AggloSilo, RecycleProcent, RecycleSilo, MVRml10ml, MVRSTD, MFRg10ml, AshProcent, VochtProcent, KleurL, KleurA, KleurB, Operator1, FlakeType1, FlakeType2, Productielijn1, Productielijn2, FlakeBatchNr1, FlakeBatchNr2, FlakeVochtProcent1, FlakeVochtProcent2, FlakeKleurL1, FlakeKleurL2, FlakeKleurA1, FlakeKleurA2, FlakeKleurB1, FlakeKleurB2, Remark1, Remark2, MeltDens) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$q = $pdo->prepare($sql);
$q->execute(array( $Datum, $Tijd, $Product, $Prod_Nr, $Batch_Nr, $Orders, $Lijn, $FP, $PeroxideType, $PeroxideProcent, $FlakeA, $FlakeSiloA, $FlakeB, $FlakeSiloB, $AggloProcent, $AggloSilo, $RecycleProcent, $RecycleSilo, $MVRml10ml, $MVRSTD, $MFRg10ml, $AshProcent, $VochtProcent, $KleurL, $KleurA, $KleurB, $Operator1, $FlakeType1, $FlakeType2, $Productielijn1, $Productielijn2, $FlakeBatchNr1, $FlakeBatchNr2, $FlakeVochtProcent1, $FlakeVochtProcent2, $FlakeKleurL1, $FlakeKleurL2, $FlakeKleurA1, $FlakeKleurA2, $FlakeKleurB1, $FlakeKleurB2, $Remark1, $Remark2, $MeltDens));
Database::disconnect();
header("Location: indexnew2019.php");
Dit gaat goed maar omdat $Product in mijn dropdown een Id geeft wil ik dus voor de insert eerst die Id uitlezen via PDO zodat ik de naam door krijgt.
Dus dacht ik het volgende te kunnen doen.:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if ($valid) {
$prod = $_POST['prod'];
$pdo1 = Database::connect();
$pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql1 = "SELECT DISTINCT Id, RNaam FROM specsv1 WHERE RActive = 'y' group by RNaam AND Id = $prod";
$q1 = $pdo1->prepare($sql1);
$q1->execute(array($Id,$RNaam));
while($row1 = $q1->fetch_assoc()) {
$Product = $row1["RNaam"];}
Database::disconnect();
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO metingen (Datum, Tijd, Product, Prod_Nr, Batch_Nr, Orders, Lijn, FP, PeroxideType, PeroxideProcent, FlakeA, FlakeSiloA, FlakeB, FlakeSiloB, AggloProcent, AggloSilo, RecycleProcent, RecycleSilo, MVRml10ml, MVRSTD, MFRg10ml, AshProcent, VochtProcent, KleurL, KleurA, KleurB, Operator1, FlakeType1, FlakeType2, Productielijn1, Productielijn2, FlakeBatchNr1, FlakeBatchNr2, FlakeVochtProcent1, FlakeVochtProcent2, FlakeKleurL1, FlakeKleurL2, FlakeKleurA1, FlakeKleurA2, FlakeKleurB1, FlakeKleurB2, Remark1, Remark2, MeltDens) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$q = $pdo->prepare($sql);
$q->execute(array( $Datum, $Tijd, $Product, $Prod_Nr, $Batch_Nr, $Orders, $Lijn, $FP, $PeroxideType, $PeroxideProcent, $FlakeA, $FlakeSiloA, $FlakeB, $FlakeSiloB, $AggloProcent, $AggloSilo, $RecycleProcent, $RecycleSilo, $MVRml10ml, $MVRSTD, $MFRg10ml, $AshProcent, $VochtProcent, $KleurL, $KleurA, $KleurB, $Operator1, $FlakeType1, $FlakeType2, $Productielijn1, $Productielijn2, $FlakeBatchNr1, $FlakeBatchNr2, $FlakeVochtProcent1, $FlakeVochtProcent2, $FlakeKleurL1, $FlakeKleurL2, $FlakeKleurA1, $FlakeKleurA2, $FlakeKleurB1, $FlakeKleurB2, $Remark1, $Remark2, $MeltDens));
Database::disconnect();
header("Location: indexnew2019.php");
}
$prod = $_POST['prod'];
$pdo1 = Database::connect();
$pdo1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql1 = "SELECT DISTINCT Id, RNaam FROM specsv1 WHERE RActive = 'y' group by RNaam AND Id = $prod";
$q1 = $pdo1->prepare($sql1);
$q1->execute(array($Id,$RNaam));
while($row1 = $q1->fetch_assoc()) {
$Product = $row1["RNaam"];}
Database::disconnect();
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO metingen (Datum, Tijd, Product, Prod_Nr, Batch_Nr, Orders, Lijn, FP, PeroxideType, PeroxideProcent, FlakeA, FlakeSiloA, FlakeB, FlakeSiloB, AggloProcent, AggloSilo, RecycleProcent, RecycleSilo, MVRml10ml, MVRSTD, MFRg10ml, AshProcent, VochtProcent, KleurL, KleurA, KleurB, Operator1, FlakeType1, FlakeType2, Productielijn1, Productielijn2, FlakeBatchNr1, FlakeBatchNr2, FlakeVochtProcent1, FlakeVochtProcent2, FlakeKleurL1, FlakeKleurL2, FlakeKleurA1, FlakeKleurA2, FlakeKleurB1, FlakeKleurB2, Remark1, Remark2, MeltDens) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$q = $pdo->prepare($sql);
$q->execute(array( $Datum, $Tijd, $Product, $Prod_Nr, $Batch_Nr, $Orders, $Lijn, $FP, $PeroxideType, $PeroxideProcent, $FlakeA, $FlakeSiloA, $FlakeB, $FlakeSiloB, $AggloProcent, $AggloSilo, $RecycleProcent, $RecycleSilo, $MVRml10ml, $MVRSTD, $MFRg10ml, $AshProcent, $VochtProcent, $KleurL, $KleurA, $KleurB, $Operator1, $FlakeType1, $FlakeType2, $Productielijn1, $Productielijn2, $FlakeBatchNr1, $FlakeBatchNr2, $FlakeVochtProcent1, $FlakeVochtProcent2, $FlakeKleurL1, $FlakeKleurL2, $FlakeKleurA1, $FlakeKleurA2, $FlakeKleurB1, $FlakeKleurB2, $Remark1, $Remark2, $MeltDens));
Database::disconnect();
header("Location: indexnew2019.php");
}
Maar dan krijg ik een http error 500 fout en met verder uitzoeken komt het door dit stukje.:
Code (php)
1
2
3
2
3
while($row1 = $q1->fetch_assoc()) {
$Product = $row1["RNaam"];}
Database::disconnect();
$Product = $row1["RNaam"];}
Database::disconnect();
Waarom gaat het fout en hoe krijg ik dit werkend?
Dit is de enigste manier die werkend is voor mij , dus ik stap liever niet over naar een andere manier als het echt niet nodig is.
Gewijzigd op 02/10/2018 20:03:03 door Pascal Schuffelers
Wat zegt je error_log?
De code die werkt is dit.:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$prod = $_POST['prod'];
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT DISTINCT RNaam FROM specsv1 WHERE RActive = 'y' and Id = $prod";
$q = $pdo->prepare($sql);
$q->execute(array($RNaam));
$row = $q -> fetch();
$Product = $row["RNaam"];
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT DISTINCT RNaam FROM specsv1 WHERE RActive = 'y' and Id = $prod";
$q = $pdo->prepare($sql);
$q->execute(array($RNaam));
$row = $q -> fetch();
$Product = $row["RNaam"];
het lag hieraan wat ik dus niet had.:
Waarom gebruik je prepared statements maar zet je toch de variabelen handmatig in de query? Zo heb je geen enkele zekerheid over wat er in je query gaat en lig je dus wijd open voor SQL injectie.
En wat @Ben zei, als je de principes niet snapt, is elke vorm van veiligheid/beveiliging een wassen neus.
Gewijzigd op 02/10/2018 22:55:42 door Thomas van den Heuvel
Ik heb deze code.:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO metingen (Datum, Tijd, Product, Prod_Nr, Batch_Nr, Orders, Lijn, FP, PeroxideType, PeroxideProcent, FlakeA, FlakeSiloA, FlakeB, FlakeSiloB, AggloProcent, AggloSilo, RecycleProcent, RecycleSilo, MVRml10ml, MVRSTD, MFRg10ml, AshProcent, VochtProcent, KleurL, KleurA, KleurB, Operator1, FlakeType1, FlakeType2, Productielijn1, Productielijn2, FlakeBatchNr1, FlakeBatchNr2, FlakeVochtProcent1, FlakeVochtProcent2, FlakeKleurL1, FlakeKleurL2, FlakeKleurA1, FlakeKleurA2, FlakeKleurB1, FlakeKleurB2, Remark1, Remark2, MeltDens) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$q = $pdo->prepare($sql);
$q->execute(array( $Datum, $Tijd, $Product, $Prod_Nr, $Batch_Nr, $Orders, 'Lijn1', $FP, $PeroxideType, $PeroxideProcent, $FlakeA, $FlakeSiloA, $FlakeB, $FlakeSiloB, $AggloProcent, $AggloSilo, $RecycleProcent, $RecycleSilo, $MVRml10ml, $MVRSTD, $MFRg10ml, $AshProcent, $VochtProcent, $KleurL, $KleurA, $KleurB, $Operator1, $FlakeType1, $FlakeType2, $Productielijn1, $Productielijn2, $FlakeBatchNr1, $FlakeBatchNr2, $FlakeVochtProcent1, $FlakeVochtProcent2, $FlakeKleurL1, $FlakeKleurL2, $FlakeKleurA1, $FlakeKleurA2, $FlakeKleurB1, $FlakeKleurB2, $Remark1, $Remark2, $MeltDens));
Database::disconnect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO metingen (Datum, Tijd, Product, Prod_Nr, Batch_Nr, Orders, Lijn, FP, PeroxideType, PeroxideProcent, FlakeA, FlakeSiloA, FlakeB, FlakeSiloB, AggloProcent, AggloSilo, RecycleProcent, RecycleSilo, MVRml10ml, MVRSTD, MFRg10ml, AshProcent, VochtProcent, KleurL, KleurA, KleurB, Operator1, FlakeType1, FlakeType2, Productielijn1, Productielijn2, FlakeBatchNr1, FlakeBatchNr2, FlakeVochtProcent1, FlakeVochtProcent2, FlakeKleurL1, FlakeKleurL2, FlakeKleurA1, FlakeKleurA2, FlakeKleurB1, FlakeKleurB2, Remark1, Remark2, MeltDens) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$q = $pdo->prepare($sql);
$q->execute(array( $Datum, $Tijd, $Product, $Prod_Nr, $Batch_Nr, $Orders, 'Lijn1', $FP, $PeroxideType, $PeroxideProcent, $FlakeA, $FlakeSiloA, $FlakeB, $FlakeSiloB, $AggloProcent, $AggloSilo, $RecycleProcent, $RecycleSilo, $MVRml10ml, $MVRSTD, $MFRg10ml, $AshProcent, $VochtProcent, $KleurL, $KleurA, $KleurB, $Operator1, $FlakeType1, $FlakeType2, $Productielijn1, $Productielijn2, $FlakeBatchNr1, $FlakeBatchNr2, $FlakeVochtProcent1, $FlakeVochtProcent2, $FlakeKleurL1, $FlakeKleurL2, $FlakeKleurA1, $FlakeKleurA2, $FlakeKleurB1, $FlakeKleurB2, $Remark1, $Remark2, $MeltDens));
Database::disconnect();
Nu wil ik graag , als de insert gelukt is een melding krijgen.
dacht dit stukje voor de disconnect te plaatsen, maar dat werkt niet.
En waarom een echo per regel?
En heb je bovenstaande reacties al gelezen?
Lees ook eens: https://www.w3schools.com/php/php_mysql_prepared_statements.asp
Gewijzigd op 03/10/2018 18:08:34 door - Ariën -
Code (php)
1
2
3
4
2
3
4
if ($q-> execute == true){
toon dialoog dat het is opgeslagen
}else{
toon dialoog dat het niet opgeslagen is}
toon dialoog dat het is opgeslagen
}else{
toon dialoog dat het niet opgeslagen is}
zo iets?
Lijn 5 zou ik dan in een aparte variabele zetten, en die gebruiken in je if-else-statement.
hoe bedoel je Ariën?
Sowieso zou alles wat in een if-statement staat (eigenlijk al) moeten evalueren tot een Boolse waarde, maar in PHP wordt dat nogal eens over het hoofd gezien omdat de taal zelf niet zo moeilijk doet over het exacte type van een expressie.
EDIT: daarbij loont het misschien ook de moeite om in het else-statement een (custom) exception te throwen als je van exceptions gebruik maakt.
Gewijzigd op 04/10/2018 09:24:50 door Thomas van den Heuvel