Ik heb mijn code draaien op het platform van Vimexx, en de update-code werkt prima om een record te updaten. Dezelfde code heb ik op een testplatform gezet, 000webhostapp.com, echter wordt een record niet geüpdatet. Weet iemand de oplossing, of het probleem?
De database heb ik al geopend. De code die ik heb.


        $ad="UPDATE werkorders SET user=?, klantID=?, kostplaats=?, startdatum=?, einddatum=?, werkzaamheden=?, soortwerk=?, werkcode=?, uren=?, peruur=?, basiskosten=?, bijzonderheden=?, totaal=?, offertetotaal=?, voorbereidingtotaal=?, gefactureerd=?, factuurdatum=?, voldaan=?, voldaandatum=?, factuurnummer=?, toelichting=?, showen=? WHERE nummer=?";
        $stmt= $mysqli->prepare($ad);
        $stmt->bind_param('sssssssssssssssssssssss', $id, $klantid, $project, $startdatum, $einddatum, $werkzaamheden, $soortwerk, $werkcode, $uren, $peruur, $basiskosten, $bijzonderheden, $totaal, $offertetotaal, $voorbereidingtotaal, $gefactureerd, $factuurdatum, $voldaan, $voldaandatum, $factuurnummer, $toelichting, $showen, $uid);
        $stmt->execute();


Ik heb errortrapping aangezet. Geen foutmelding, maar geen update. Wat moet ik veranderen? Dank
Heb je foutafhandeling al aangezet? Geen idee of ej dat ook bedoelt met 'errortrapping' ?
Het einde van de 3e regel klopt in ieder geval niet:

<?php
... $factuurnummer, $toelichting, $showen, $uid) &&
?>

Dat zal dit moeten zijn:

<?php
... $factuurnummer, $toelichting, $showen, $uid);
?>
&& Oeps foutje van het kopieren.

Errortrapping is foutmeldingen aan:
error_reporting(E_ALL);
ini_set('display_errors', 1);

Aha, ik denk dat ik het al zie ...

Vergelijk ...

$ad="UPDATE werkorders SET user=?, klantID=?,

met dit ...

$stmt->bind_param('sssssssssssssssssssssss', $id, $klantid,

Die 'sssssssssssssssssssssss' hoort daar niet.
Ik heb de routine omgeschreven.


    	$servername = "localhost";
	$username = "username";
	$password = "password";
	$dbname = "dbname";
	// Create connection
	$conn = new mysqli($servername, $username, $password, $dbname);
        $ad="UPDATE werkorders SET user='$id', klantID='$klantid', kostplaats='$project', startdatum='$startdatum', einddatum='$einddatum', werkzaamheden='$werkzaamheden', soortwerk='$soortwerk', werkcode='$werkcode', uren='$uren', peruur='$peruur', basiskosten='$basiskosten', bijzonderheden='$bijzonderheden', totaal='$totaal', offertetotaal='$offertetotaal', voorbereidingtotaal='$voorbereidingtotaal', gefactureerd='$gefactureerd', factuurdatum='$factuurdatum', voldaan='$voldaan', voldaandatum='$voldaandatum', factuurnummer='$factuurnummer', toelichting='$toelichting', showen='$showen' WHERE nummer='$uid'";
     $result= mysqli_query($conn,$ad);
     // check of geupdated is
     if ($result) {
    	echo "Oke!";
     } else {
    	echo "Not oke!";
     }


De foutafhandeling staat aan, geen foutmeldingen.

Echter resultaat is 'Oke!'

Maar.... de update is niet uitgevoerd.

Wie weet hier raad?
Verander

WHERE nummer='$uid'

eens in

WHERE nummer=$uid
Echo de query eens? Dat is namelijk het SQL-statement wat uiteindelijk wordt uitgevoerd.

En id's met type-aanduiding 's', dat rijmt sowieso niet. Het werkt wellicht wel, maar dat schiet dan toch echt zijn doel voorbij als je een parameter die numeriek zou moeten zijn aan het SQL-statement voert alsof het een string is...

Ik zou trouwens id's tussen quotes laten staan, en er zorg voor dragen dat deze alle (inclusief alle andere invoerparameters) ge-escaped worden met een escape-functie. Het een is niet veilig zonder het ander.

Los daarvan, prepare(), bind_param(), execute()... ain't nobody got time for that. Prepared statements van mysqli zijn nogal ruk.
Zit je niet in een transaction die niet ge-commit of verderop ge-rollback-ed wordt, of staat toevallig autocommit=0?
Ik heb in eerste instantie de integers als ‘i’ ingegeven in de goede volgorde. Werkte toen ook niet. Toen las is dat mysql met ‘s’ overal het juiste type van maakt. Ik ga echo proberen en de andere tips. Op beide platformen draait php7.1. ik snap niet waarom het op het ene hostingplatform wel werkt en op de andere niet. Heeft het aantal parameters, velden wellicht nog invloed? Dank voor de tips.
Als je new mysqli() gebruikt, moet het dan niet zo zijn :

$result= $conn->query($ad);

Reageren