В настоящее время я работаю над проектом, и вместо использования обычных запросов MySQL я решил пойти дальше и научиться использовать PDO.
У меня есть таблица с именами конкурсантов, обе базы данных,таблица и все столбцы в UTF-8.У меня есть десять записей в таблице участников, и их столбец «имя» содержит такие символы, как åäö.
Теперь, когда я выбираю запись из базы данных и var_dump имя, я получаю хороший результат,строка со всеми специальными символами без изменений.Но мне нужно разделить строку по символам, чтобы получить ее в массиве, который я затем перемешаю.
Например, у меня есть эта строка: Test ÅÄÖ Tåän
И когда я запускаю str_split, я получаю каждый символ в его собственном ключе в массиве.Единственная проблема заключается в том, что все специальные символы отображаются следующим образом: �, то есть массив будет выглядеть следующим образом:
Array
(
[0] => T
[1] => e
[2] => s
[3] => t
[4] =>
[5] => �
[6] => �
[7] => �
[8] => �
[9] => �
[10] => �
[11] =>
[12] => T
[13] => �
[14] => �
[15] => �
[16] => �
[17] => n
)
Как видите, он не только портит символы, но и дублирует ихв процессе str_split.Я пробовал несколько способов разбить строку, но все они имеют одну и ту же проблему.Когда я вывожу строку перед разделением, она хорошо показывает специальные символы.
Это мой код dbConn.php:
// Требуется файл конфигурации: require_once ('config.inc.php ');
// Start PDO connection:
$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf-8", $dbUser, $dbPass);
$dbHandle -> exec("SET CHARACTER SET utf8");
// Set error reporting:
$dbHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
И этот код, который я использую для извлечения из базы данных и цикла:
// Require files:
require_once('dbConn.php');
// Get random artist:
$artist = $dbHandle->query("SELECT * FROM ".ARTIST_TABLE." WHERE id = 11 ORDER BY RAND() LIMIT 1");
$artist->setFetchMode(PDO::FETCH_OBJ);
$artist = $artist->fetch();
var_dump($artist->name);
// Split name:
$artistChars = str_split($artist->name);
Я подключаюсь с utf-8, мой файл phpis utf-8 без спецификации , и никакие другие специальные символы на этой странице не разделяют эту проблему.Что может быть не так или что я делаю не так?