Ik heb vanalles nagezocht, maar krijg niet gevonden waarom de query niet werkt. Dit is wat ik heb:
//Connect to the dBase
require_once ('link to de dBase-connectionFile');
$sql_update = "UPDATE socios
SET 'nombre' = :nombre,
'apellidos' = :apellidos,
'socio' = :socio,
'email' = :email,
'dni' = :dni
WHERE
'id' = $id";
$stmt = $db->prepare($sql_update);
$stmt->execute(array(':nombre'=>$nombre,
':apellidos'=>$apellidos,
':socio'=>$socio,
':email'=>$email,
':dni'=>$dni));
if($stmt->rowCount() == 0) {
throw new PDOException ('Er zijn geen rijen gewijzigd in de UPDATE query');
}
De foutmelding geeft:
"SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; near:''nombre' = 'XXXX', 'apellidos' = 'XXX XXX', 'socio' = '00' at line 3"
Ik kom er niet uit
$id=$_POST['id'];
try {
//Connect to the dBase
require_once ('connect.php');
//Make update-query for the dBase
$sql_update = "UPDATE socios
SET
nombre = :nombre,
apellidos = :apellidos,
socio = :socio,
email = :email,
dni = :dni
WHERE
'id' = $id";
$stmt = $db->prepare($sql_update);
$stmt->execute(array(':nombre'=>$nombre,
':apellidos'=>$apellidos,
':socio'=>$socio,
':email'=>$email,
':dni'=>$dni));
if($stmt->rowCount() == 0) {
throw new PDOException ('Er zijn geen rijen gewijzigd in de UPDATE query');
}
}
catch (PDOException $e) {
echo '<pre>';
echo 'Regel: ' . $e->getLine() . '<br />';
echo 'Bestand: ' . $e->getFile() . '<br />';
echo 'Foutmelding: ' . $e->getMessage();
echo '</pre>';
}
De gegevens in het formulier die verzonden worden met method="post", worden opgehaald uit de dBase met een selectquery, ook de id zie ik juist weergegeven. De id in de dBase is autoincrement, dus blijft identiek, maar verzekerd mij er van dat er maar 1 record aangepast wordt, nl. die met die specifieke id.
Ja, foutje, heb ze weggehaald.
als ik ingeef:
WHERE id=:id, dan krijg ik wel een pdo-errormessage, nl: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens op regelnr.20
als ik doe: where id=$id, waarbij $id=$_POST['id'], dan krijg ik de melding dat er niks is aangepast. Dus ik vermoed dat het daarmee te maken heeft, maar ik weet niet hoe ik het moet aanpassen.
Verander eerst regel 14 in id = :id. Daarna :id => $_POST['id']mee geven in de array op regel 16. Als er dan niets verandert, kijken of $_POST['id'] is wat je verwacht.
Ik heb de oplossing gevonden. Waarschijnlijk heb ik steeds over het hoofd gezien dat de aanhalingstekens bij id er nog stonden, want ik had deze oplossing al eerder geprobeerd, maar met foutmeldingen. Dus nu is het oed.
Dank voor jullie hulp.