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.
Wat zegt je error_log?
Heb het eindelijk gevonden.
De code die werkt is dit.:

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


het lag hieraan wat ik dus niet had.:

 $q->execute(array($RNaam));

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.
Als je ATTR_ERRMODE gelijk is aan ERRMODE_EXCEPTION zou ik op zijn minst een try-catch block verwachten. Als je die niet hebt resulteert een niet-gevangen exception in een Fatal Error die waarschijnlijk roet in het eten gooit in de vorm van output voordat je een header probeert te verzenden.

En wat @Ben zei, als je de principes niet snapt, is elke vorm van veiligheid/beveiliging een wassen neus.
Een klein vraagje nog.
Ik heb deze code.:

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


Nu wil ik graag , als de insert gelukt is een melding krijgen.
dacht dit stukje voor de disconnect te plaatsen, maar dat werkt niet.


echo  "<div id='dialog' title='QCP dialog' style='width:864px;'>" ;
            echo  "<p>Uw ingevulde data is met succes opgeslagen.</p>";
            echo  "</div>";
Waarom zet je jouw connectie niet in een globaal bestand die je van te voren inlaadt? Nu voer je steeds opnieuw een 'dure' connectie uit, terwijl dat prima eenmalig kan.

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
hoe moet ik dat dan opzetten daarmee?


if ($q-> execute == true){
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.

Reageren