Я пытаюсь загрузить некоторые данные в базу данных 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).