如何在MYSQL中将mysqli_set_charset($ conn,“utf8”)转换为PDO格式?

时间:2016-09-16 03:47:49

标签: 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) {
    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 个答案:

答案 0 :(得分:5)

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

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

{{1}}