Я сделал ошибку Google о том, что нет надежного способа выбрать страницу в BottomNavigationView: https://code.google.com/p/android/issues/detail?id=233697
У NavigationView, похоже, была аналогичная проблема, которую они исправили добавлением нового метода setCheckedItem ().
У вас будет это в вашей строке соединения, например:
"mysql:host=$host;dbname=$db;charset=utf8"
HOWEVER, до PHP 5.3.6, параметр charset был проигнорирован. Если вы используете более старую версию PHP, вы должны сделать это следующим образом:
$dbh = new PDO("mysql:$connstr", $user, $password);
$dbh->exec("set names utf8");
Для полноты есть три способа установить кодировку при подключении к MySQL из PDO и какие из них зависят от вашей версии PHP. Порядок предпочтения будет:
charset
параметр в строке DSN SET NAMES utf8
с опцией PDO::MYSQL_ATTR_INIT_COMMAND
подключения SET NAMES utf8
вручную В этом примере кода реализованы все три:
<?php
define('DB_HOST', 'localhost');
define('DB_SCHEMA', 'test');
define('DB_USER', 'test');
define('DB_PASSWORD', 'test');
define('DB_ENCODING', 'utf8');
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_SCHEMA;
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
);
if( version_compare(PHP_VERSION, '5.3.6', '<') ){
if( defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){
$options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . DB_ENCODING;
}
}else{
$dsn .= ';charset=' . DB_ENCODING;
}
$conn = @new PDO($dsn, DB_USER, DB_PASSWORD, $options);
if( version_compare(PHP_VERSION, '5.3.6', '<') && !defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){
$sql = 'SET NAMES ' . DB_ENCODING;
$conn->exec($sql);
}
Выполнение всех трех, вероятно, слишком велико (если вы не пишете класс, планируете распространять или повторно использовать).
$ con = new PDO ("mysql: host = $ dbhost; dbname = $ database; charset = $ encoding", "$ dbuser", "$ dbpassword");
До PHP 5.3.6 параметр charset был проигнорирован. Если вы используете более старую версию PHP, вы должны сделать это следующим образом:
<?php
$dbh = new PDO("mysql:$connstr", $user, $password);
$dbh -> exec("set names utf8");
?>
$conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
Я тестирую этот код и
$db=new PDO('mysql:host=localhost;dbname=cwDB','root','',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$sql="select * from products ";
$stmt=$db->prepare($sql);
$stmt->execute();
while($result=$stmt->fetch(PDO::FETCH_ASSOC)){
$id=$result['id'];
}
Это, наверное, самый элегантный способ сделать это. Прямо в вызове конструктора PDO, но избегая опции багги-кодировки (как упоминалось выше):
$connect = new PDO(
"mysql:host=$host;dbname=$db",
$user,
$pass,
array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
)
);
Отлично работает для меня.
array(1002 => 'SET NAMES utf8',...)
.
– JDelage
25 February 2012 в 01:50
charset=utf8
в строке dsn работает! Я пытался выяснить этот вопрос на странице groups.google.com/d/msg/auraphp/syMS26Rz-q8/9laQr9tR4EoJ
– Hari K T
14 November 2013 в 07:17
Я просто хочу добавить, что вы должны убедиться, что ваша база данных создана с помощью COLLATE utf8_general_ci или любой другой сортировки, которую вы хотите использовать. Кроме того, вы можете получить другую, чем предполагалось.
В phpmyadmin вы можно увидеть сортировку, щелкнув вашу базу данных и выбрав операции. Если вы попытаетесь создать таблицы с другой сортировкой, отличной от вашей базы данных, ваши таблицы в конечном итоге все равно будут сопоставлены с базами данных.
Поэтому убедитесь, что сортировка для вашей базы данных прямо перед созданием таблиц. Надеюсь, это сэкономит кому-то несколько часов lol
$con="";
$MODE="";
$dbhost = "localhost";
$dbuser = "root";
$dbpassword = "";
$database = "name";
$con = new PDO ( "mysql:host=$dbhost;dbname=$database", "$dbuser", "$dbpassword", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$con->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );