2017-03-04 59 views
0

我想插入特殊字符(实体)到MySQL数据库使用PHP。如何插入特殊字符int mysqldb使用PHP

<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "test"; 

$autoid = $_REQUEST["autoid"]; 
// $explanation = htmlspecialchars($_REQUEST["explanation"]); 
$explanation = mysql_real_escape_string("<p>hello how are you Ê</p>"); 



    echo $explanation; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 

    //$explanation = utf8_decode(trim(mysql_real_escape_string($explanation)); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "UPDATE question_master SET explanation='$explanation' WHERE autoid=$autoid"; 

    if ($conn->query($sql) === TRUE) { 
     echo "Record updated successfully"; 
    } else { 
     echo "Error updating record: " . $conn->error; 
    } 

    $conn->close(); 
?> 

我尝试通过字符串是<p>hello how are you Ê</p>但MySQLdb的更新后,它成为<p>hello how are you Ê</p>。我是mysql新手,不知道出了什么问题。

表核对是utf8mb4_bin表核对是utf8_bin

+0

http://stackoverflow.com/questions/8568301/how-to-insert-special-language-characters -in-php-into-mysql-database – ashanrupasinghe

+0

ADD“” –

回答

0

尝试设置的字符集,使逃避工作的期望的呼叫mysql_real_escape_string()这样前:

mysql_set_charset("utf8mb4"); 

$explanation = mysql_real_escape_string("<p>hello how are you Ê</p>"); 

编辑:我刚刚注意到你使用depraated mysql_real_escape_string() ..相反,你应该使用mysqli_real_escape_string()。更具体地说,您最好通过将链接标识符传递给MySQL连接来为特定连接设置字符集。所以,去正确的方法是这样的:

$conn = new mysqli($servername, $username, $password, $dbname); 

mysqli_set_charset($conn, "utf8mb4"); 

$explanation = mysqli_real_escape_string($conn, "<p>hello how are you Ê</p>"); 

文档: http://php.net/manual/en/mysqli.set-charset.php http://php.net/manual/en/mysqli.real-escape-string.php