Ik heb dit stukje dat mijn gegevens weg schrijft.:

 $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");


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.:

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");
        }


Maar dan krijg ik een http error 500 fout en met verder uitzoeken komt het door dit stukje.:

 while($row1 = $q1->fetch_assoc()) {
                $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.
Ariƫn bedoelt zoiets :

<?php
$result = $q->execute( array( de rest ) );
if ( $result == TRUE ) {
	// dingen doen als het waar is
} elseif ( $result == FALSE ) {
	// dingen doen als het niet waar is
}
?>
Het lijkt mij niet direct nodig om dit expliciet met true of false te vergelijken.

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.

Reageren