Почему я получаю исключение PDO при загрузке в базу данных - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь загрузить некоторые данные в базу данных MySQl, используя объект PDO. Однако всякий раз, когда я пытаюсь отправить запрос, он генерирует исключение PDOException. Я следовал нескольким учебникам по книге, и это должно быть простой задачей. Я понятия не имею, почему он вызывает исключение.

Вот мой код:

    // Add a new image data to db and return ID (ID column of pelagicsschema.images)
    public  function addImage(string $name, string $species, string $rarity, string $description){
    //Global PDO Object
    global $pdo;
    //trim strings to remove extra spaces
    $name = trim($name);
    $species = trim($species);
    $rarity = trim($rarity);
    $description = trim($description);



   // Add the new Image

   /* Insert query template */
   $query = 'INSERT INTO pelagicsSchema.images (Name,Species,Rarity,Description) VALUES    (:name,:species,:rarity,:description)';
   /* Values array for PDO */
   $values = array(':name'=>$name, ':species'=>$species, ':rarity'=>$rarity, ':description'=>$description);
   /* Execute the query */
   try
   {
       $res = $pdo->prepare($query);
       $res->execute($values);
   }
   catch (PDOException $e)
   {
      /* If there is a PDO exception, throw a standard exception */
      throw new Exception('Database query error');
   }

       /* Return the new ID */
        return $pdo->lastInsertId();
    }

Примечание. Запрос выполняется отлично, если я использую exe c () вместо prepare / выполнить, но так как этот запрос будет выполнен несколько раз с различными данными, я считаю, что подготовка / выполнение - это путь к go.

РЕДАКТИРОВАТЬ: Исключение, которое я получаю:

SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'Name' at row 1

Значит ли это, что мне нужно изменить тип данных для этого столбца в моей БД? В настоящее время установлено значение VARCHAR (30).

1 Ответ

0 голосов
/ 07 февраля 2020

Похоже, вы пытаетесь вставить данные, длина которых превышает максимальный размер определения столбца.

Если вы хотите хранить строки длиной более 255 символов, вам следует использовать другой тип для определения столбца name , text например.

http://www.sqlerror.de/db2_sql_error_-404_sqlstate_22001.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...