php – Mysql:常规错误:1366字符串值不正确
今天我正在开发基于
PHP,MySql和Zend Framework的应用程序时出错.此外,我使用
phpseclib使用
AES algorithm加密数据,这里出现了问题. AES算法的输出是看起来MySql不喜欢的形式.事实上,当我尝试将数据插入数据库时??,得到一个Sql Exception.错误是:
SQLSTATE[HY000]: General error: 1366 Incorrect string value: 'xE4xD5xABtZM...' for column 'Name' 我已经阅读了Stackoverflow中发布的所有答案,并且还将Googled的问题,但所有提出的解决方案已经在我的代码.数据库,表和所有col都有排序规则utf8_general_ci.下面你可以看到相关代码: > Application.ini来看看如何设置连接 的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); 加密() public static function encrypt($Data,$EncryptionKey) { $AES = new Crypt_AES(); $AES->setKey($EncryptionKey); return $AES->encrypt($Data); } 表 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; 问题:我如何解决问题并将数据存储到数据库中?
我意识到这是一个用于MySQL的AES_ENCRYPT的
reference,但是看起来您可能需要将varchar(200)更改为varbinary(200)(或更大),因为AES似乎返回一个二进制字符串.
在MySQL站点上有一个不太清楚的explanation.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |