簡體   English   中英

為什么上傳到數據庫時會收到 PDO 異常

[英]Why am I receiving a PDO Exception when Uploaing to the Database

我正在嘗試使用 PDO 對象將一些數據上傳到 MySQl DB。 但是,每當我嘗試提交查詢時,它都會拋出 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();
    }

注意:如果我使用 exec() 而不是准備/執行,查詢會完美執行,但由於此請求將使用不同的數據多次發出,我相信准備/執行是要走的路。

編輯:我收到的例外是:

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

這是否意味着我需要更改數據庫中該列的數據類型? 目前它被設置為 VARCHAR(30)。

看起來您正在嘗試插入比列定義的最大大小更長的數據。

如果您想存儲大於 255 個字符的字符串,您應該為name列定義使用另一種類型,例如text

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM