2015-08-07 4 views
0

Я хочу, чтобы вставить данные в моей базе данных 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(); 
+0

Распечатайте необработанный SQL-запрос в вашем PHP-коде и добавьте его в вопрос. Должно быть очевидно, что не так. –

+0

Спасибо, как распечатать запрос SQL? – Jarla

+0

Добавьте 'echo $ sql' в свой код, скопируйте вывод и добавьте его в OP. Готов поспорить, вы увидите что-то очевидное. –

ответ

1

Вы используете UPDATE заявление, как:
UPDATE myTable SET nameColumn = 'Forrest Gump' WHERE idColumn = 15;

Вы можете установить несколько колонок с помощью одного оператора и WHERE пункта используется как в регулярное заявление SELECT.

+0

Спасибо, UPDATE был таким ключевым. Я опубликовал свой результат в моем вопросе. – Jarla

Смежные вопросы