Mysql: Общая ошибка: 1366 Неверное строковое значение

Сегодня у меня возникла ошибка, когда я разрабатывал приложение на основе PHP, MySql и Zend Framework. Более того, я использую phpseclib для шифрования данных с помощью алгоритма AES , и вот тут возникла проблема. Выходные данные алгоритма AES имеют форму, которая, кажется, не нравится MySql. Фактически, когда я пытаюсь вставить данные в базу данных, возникает исключение Sql. Ошибка:

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE4\xD5\xABtZM...' for column 'Name'

Я уже прочитал все ответы, опубликованные на Stackoverflow, а также искал проблему в Google, но все предлагаемые решения уже были в моем коде.База данных, таблицы и все столбцы имеют Collation utf8_general_ci . Ниже вы можете увидеть соответствующий код:

  1. Application.ini, чтобы увидеть, как устанавливается соединение
  2. Database.php, чтобы увидеть, как я получаю соединение с базой данных
  3. Model.php, чтобы увидеть, как я пытаюсь вставить данные в базе данных
  4. encrypt (), чтобы увидеть, как я использую класс AES для шифрования данных.
  5. Определение таблицы (если знать, что все в utf8 недостаточно)

application.ini

resources.db.adapter = "Pdo_Mysql"
resources.db.params.charset = "utf8"
resources.db.params.host = "localhost"
resources.db.params.username = "********"
resources.db.params.password = "********"
resources.db.params.dbname = "dbname"

database .php

public static function getDb()
{
   if (self::$Db === NULL)
      self::$Db = Zend_Db_Table::getDefaultAdapter();
   return self::$Db;
}

model.php

$Values = array(
   'Id' => $this->Id,
   'Name' => $this->Name,
   'CreationDate' => $this->CreationDate,
);
$RowChanged = $Db->insert('TABLENAME', $Values);

encrypt ()

public static function encrypt($Data, $EncryptionKey)
{
   $AES = new Crypt_AES();
   $AES->setKey($EncryptionKey);
   return $AES->encrypt($Data);
}

table

CREATE TABLE IF NOT EXISTS `table` (
  `Id` mediumint(8) unsigned NOT NULL,
  `Name` varchar(200) DEFAULT NULL,
  `CreationDate` date NOT NULL,
  PRIMARY KEY (`Id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Вопрос: Как я могу решить проблему и сохранить данные в базе данных?

12
задан Aurelio De Rosa 28 November 2011 в 03:45
поделиться