2016-09-16 2 views
0

Я пытаюсь решить проблему UTF8. Пока мне удается протестировать, и он работает в соединении mysqli.

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "tesddddt"; 

$conn = mysqli_connect($servername, $username, $password, $dbname); 
mysqli_set_charset($conn,"utf8"); 

if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
$sql = "SELECT * FROM customer"; 
$result = mysqli_query($conn, $sql); 

if (mysqli_num_rows($result) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($result)) { 
     echo "id: " . $row["uid"]. " - Name: " . $row["username"]. " " . $row["email"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 

У меня есть возможность правильно вставлять и выбирать данные с символами, указанными в его языке, с вышеуказанной кодировкой.

Однако, когда я пытаюсь сделать это в PDO, при вставке данных появляется 1 ошибка.

public function __construct(){ 
    try {  

     $conn = new PDO("mysql:host=$this->db_host;dbname=$this->db_name", $this->db_user_name, $this->db_pass); 
     mysqli_set_charset($conn,"utf8"); // <- added here 
     $this->conn=$conn; 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    } 
    catch(PDOException $e) 
    { 
     echo "Connection failed: " . $e->getMessage(); 
    } 
} 

Я получил эту ошибку

Warning: mysqli_set_charset() expects parameter 1 to be mysqli, object given in... 

Мой PHP проект использует PDO и, следовательно, необходимо, чтобы получить эту работу в формате PDO. Кто-нибудь знает, как это решить?

+1

[он должен идти в DSN] (https://phpdelusions.net/pdo#dsn) –

ответ

2

Вы пытаетесь подключиться через PDO, а затем изменить кодировку через mysqli, не имея соединения mysqli, что и вызывает предупреждение.

В PDO кодировка обычно уточняются в строке подключения, например:

$conn = new PDO("mysql:host=yourhost;dbname=yourdbname;charset=utf8"); 
+1

второй вариант не совпадает с mysqli_set_charset() и поэтому не следует упоминать. особенно потому, что OP использует PDO в режиме эмуляции. вы можете прочитать больше здесь: http://php.net/manual/en/mysqlinfo.concepts.charset.php –

+0

thx вас обоих, теперь это работает! – gosulove

Смежные вопросы