Bugün PHP, MySql ve Zend Framework tabanlı bir uygulama geliştirirken bir hatayla karşılaştım. Ayrıca, AES algorithm kullanarak verileri şifrelemek için phpseclib kullanıyorum ve sorun geldi. AES algoritmasının çıktısı, MySql'nin beğenmediği bir formdadır. Veriyi veritabanına eklemeye çalıştığımda Infact bir Sql İstisnası aldı. hatadır:Mysql: Genel hata: 1366 Yanlış dize değeri
SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE4\xD5\xABtZM...' for column 'Name'
Zaten Stackoverflow yayınlanan tüm cevapları okudum ve aynı zamanda sorunu Google'da ancak tüm çözüm önerisi benim kodunda zaten. Veritabanı, tablolar ve tüm cols Collation utf8_general_ci
var. Eğer ilgili kodun görebilirsiniz:
- Application.ini ben denemek görmek için veritabanı bağlantısı
- Model.php almak nasıl olduğunu görmek için bağlantıyı
- DatabaseFunctions.php nasıl ayarlandığını görmek için Ben
- Tablo tanım verileri şifrelemek için AES sınıfını nasıl kullandıklarını görmek için veritabanında
- şifrelemek() verilerini eklemek için
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"
DatabaseFunctions.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);
şifrelemek()
public static function encrypt($Data, $EncryptionKey)
{
$AES = new Crypt_AES();
$AES->setKey($EncryptionKey);
return $AES->encrypt($Data);
}
tablo
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;
Soru: Sorunu çözmek ve veritabanına veri depolamak nasıl?
ilgili soru http://stackoverflow.com/questions/7461962/mysql-how-to-store-aes-encrypted-data – hafichuk