Я хочу, чтобы вставить данные в моей базе данных SQL:Как вставить данные в определенную строку в базу данных mySQL?
try {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO animals (size) values(?) WHERE id = '$name'";
$q = $pdo->prepare($sql);
foreach($animalarray as $row) {
if (array_key_exists('size',$row)){
$q->execute(array($row['size']));
}
}
}
catch (PDOException $pe) {
echo $pe->getMessage();
}
catch (Exception $e) {
echo $e->getMessage();
}
Database::disconnect();
Но я получаю сообщение об ошибке: SQLSTATE [42000]: Ошибка синтаксиса или нарушение прав доступа: 1064 У вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи «WHERE ID =» лошадь „“ в строке 1
Я обновил свой код в соответствии с ответом G_hi3. Теперь это работает. Моя ошибка была в том, что я пытался использовать INSERT вместо UPDATE:
try {
$pdo = Database::connect();
$update_animal = "UPDATE animals SET size='$size' WHERE id = '$name'";
$sql = $pdo->prepare($update_animal);
$sql->execute();
}
catch (PDOException $pe) {
echo $pe->getMessage();
}
catch (Exception $e) {
echo $e->getMessage();
}
Database::disconnect();
Распечатайте необработанный SQL-запрос в вашем PHP-коде и добавьте его в вопрос. Должно быть очевидно, что не так. –
Спасибо, как распечатать запрос SQL? – Jarla
Добавьте 'echo $ sql' в свой код, скопируйте вывод и добавьте его в OP. Готов поспорить, вы увидите что-то очевидное. –