PDO Connection Configuration: Handling Character Sets
When establishing a connection using PHP Data Objects (PDO), it is crucial to consider the character set handling, especially if working with non-ASCII characters. In this regard, the PHP PDO provides options to set the character set.
Connection String Approach
In PDO versions starting from PHP 5.3.6, you can specify the character set directly in the connection string. For example, to set the character set to 'utf8mb4':
$connect = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
DBH Exec Approach for Older PHP Versions
However, if you are using an older version of PHP (prior to 5.3.6), the charset option in the connection string will be ignored. In such cases, you need to set the character set using the following approach:
$dbh = new PDO("mysql:host=$host;dbname=$db", $user, $password); $dbh->exec("set names utf8mb4");
Legacy MySQL_* Approach
The code snippet you provided, which involves using mysql_set_charset and mysql_query("SET NAMES 'UTF8'"), is applicable to the legacy MySQL_* functions, which are now deprecated and discouraged. PDO is the recommended approach for connecting to and interacting with MySQL databases in PHP.
Conclusion
By following these guidelines, you can effectively configure the character set handling in PDO connections, ensuring that non-ASCII characters are handled correctly in your PHP applications.
The above is the detailed content of How to Properly Configure Character Sets in PDO Database Connections?. For more information, please follow other related articles on the PHP Chinese website!