Ярослав
Новичок
PDO Exception 1366...
Здравствуйте
При вставке данных в базу возникает еxception но только если передаю в кирилице. Если в латинице то все ок
Мой код
....
Создаю класс таблицы
Делаю вставку данных
//$data['login'] содержит подобие "фвафыва"
Подскажите как исправить эту ошибку.
-~{}~ 23.01.08 09:44:
Протестировал под линукс работает.
Наверное все-таки проблема с кодировками соединения или в PDO можно задать кодировку...
Вопрос остается открытым
-~{}~ 23.01.08 10:37:
Скорее всего это было проблема из-за того что автоматически не "кавычились" данные
ё маё
Протестировал сегодня еще раз на винде.
Если кодировка страницы utf-8 то данные записываются в базу нормально. Но если например выставить кодировку в браузере cp-1251 то выбрасывается исключение 1366...
Кто нибудь сталкивался с подобным? Как с этим бороться?
Здравствуйте
При вставке данных в базу возникает еxception но только если передаю в кирилице. Если в латинице то все ок
PHP:
Zend_Db_Statement_Exception: SQLSTATE[HY000]: General error: 1366
Incorrect string value: '\xF4\xFB\xE2\xE0\xF4\xFB...' for column 'login' at row 1
in C:\www\project\ZendFramework-1.0.3\library\Zend\Db\Statement\Pdo.php on line 227
PHP:
....
Создаю подключение
$db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Registry::set('db', $db);
$db->query('SET names utf8');
$db->query('SET character set utf8');
Создаю класс таблицы
PHP:
<?php
class User_UsersTable extends Zend_Db_Table
{
protected $_name = 'users';
}
//$data['login'] содержит подобие "фвафыва"
PHP:
$userTable = new User_UsersTable();
$compareData = array(
'login' => $data['login'],
'password' => md5($data['password']),
....
);
return $userTable->insert($compareData);
-~{}~ 23.01.08 09:44:
Протестировал под линукс работает.
Наверное все-таки проблема с кодировками соединения или в PDO можно задать кодировку...
Вопрос остается открытым
-~{}~ 23.01.08 10:37:
PHP:
<?php
$options = array(
Zend_Db::AUTO_QUOTE_IDENTIFIERS => false
);
$params = array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test',
'options' => $options
);
$db = Zend_Db::factory('Pdo_Mysql', $params);
ё маё
-~{}~ 24.01.08 00:46:Значения и идентификаторы в SQL-выражении не заключаются в кавычки автоматически. Если имеются значения или идентификаторы, которые требуют заключения в кавычки, то вы должны произвести его сами. Используйте методы quote(), quoteInto() и quoteIdentifier() адаптера БД.
Протестировал сегодня еще раз на винде.
Если кодировка страницы utf-8 то данные записываются в базу нормально. Но если например выставить кодировку в браузере cp-1251 то выбрасывается исключение 1366...
Кто нибудь сталкивался с подобным? Как с этим бороться?