Mysql
 sql >> Base de données >  >> RDS >> Mysql

Modification du script php en PDO provoquant une erreur de syntaxe lors de la requête de mise à jour MySQL

Si vous envisagez de passer à PDO, vous pouvez également tirer parti des instructions préparées et de la liaison de paramètres. Cela rend en fait vos requêtes beaucoup plus sûr de l'injection SQL et rend également votre code plus lisible. Votre générateur de requêtes approche complique un peu les choses mais c'est toujours possible. Je recommande également fortement d'activer le rapport d'erreurs pendant le développement. Par exemple

error_reporting(E_ALL);
ini_set('display_errors', 'On');

$upd = array('name = :name', 'type = :type');
$values = array(
    'name' => $name,
    'type' => $type,
    'ride_id' => $ride_id,
    'park_id' => $park_id
);

if (!empty($topride)) {
    $upd[] = 'top_ride = :topride'; // :topride is the named parameter placeholder
    $values['topride'] = $topride; // the array key matches the named placeholder above
}
if (!empty($info)) {
    $upd[] = 'info = :info';
    $values['info'] = $info;
}
// and so on

$query = sprintf('UPDATE tpf_rides SET %s WHERE ride_id = :ride_id AND park_id = :park_id',
    implode(', ', $upd));
$stmt = $pdo->prepare($query);
$stmt->execute($values);