我试图解决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格式开展这项工作。谁知道如何解决这个问题?
答案 0 :(得分:5)
您尝试通过PDO连接,然后通过mysqli更改charset,而没有mysqli连接,这就是导致警告的原因。
在PDO中,通常在连接字符串中指定字符集,如下所示:
{{1}}