Php 如何在MYSQL中将mysqli_set_字符集($conn,“utf8”)转换为PDO格式?

Php 如何在MYSQL中将mysqli_set_字符集($conn,“utf8”)转换为PDO格式?,php,mysql,mysqli,pdo,Php,Mysql,Mysqli,Pdo,我正在尝试解决UTF8问题。到目前为止,我设法进行了测试,它在mysqli连接中工作 $servername = "localhost"; $username = "root"; $password = ""; $dbname = "tesddddt"; $conn = mysqli_connect($servername, $username, $password, $dbname); mysqli_set_charset($conn,"utf8"); if (!$conn) {

我正在尝试解决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";
}

我的php项目使用PDO,因此需要以PDO格式完成这项工作。有人知道怎么解决这个问题吗

您尝试通过PDO连接,然后通过mysqli更改字符集,而没有mysqli连接,这就是导致警告的原因

在PDO中,字符集通常在连接字符串中指定,如下所示:

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

第二个选项与mysqli_set_charset()不同,因此不应提及。特别是因为OP在仿真模式下使用PDO。您可以在此处阅读更多内容:
Warning: mysqli_set_charset() expects parameter 1 to be mysqli, object given in...
$conn = new PDO("mysql:host=yourhost;dbname=yourdbname;charset=utf8");