[英]MySQL encoding problems on iOS
因此,我正在構建一個將POST變量插入MySQL數據庫的PHP網站。 整個網站均采用UTF8編碼,以支持希伯來語文本。
它在台式機上運行良好,但由於某些原因,在iOS中該網站以亂碼的形式插入變量。
這是PHP代碼示例:
$con=mysqli_connect("xxx","xxx","xxx","xxx");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$fullPhone=$_POST[prefix].''.$_POST[phone];
$sql="INSERT INTO testtab (fbName, fbId, fbComment, name, email, phone)
VALUES('$_POST[fbName]','$_POST[fbID]','$_POST[fbComment]','$_POST[name]','$_POST[email]','$fullPhone')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
mysqli_close($con);
就在昨天,我也遇到了一個類似的問題,那就是智能引號和其他unicode字符。 對我來說,解決方案是確保將MySQL連接以及表和HTML設置為UTF-8。 這是一個例子:
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to the database');
if (!mysql_set_charset('utf8', $conn)) {
echo "Error: Unable to set the character set.\n";
exit;
}
將此添加到您的連接:
//if i want to work with hebrew databases
mysql_query("SET NAMES 'utf8'",$connection);//reading hebrew from phpadmin database - only for hebrew sites
像這樣:
$con=mysqli_connect("xxx","xxx","xxx","xxx");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//if i want to work with hebrew databases
mysql_query("SET NAMES 'utf8'",$con);//reading hebrew from phpadmin database - only for hebrew sites
$fullPhone=$_POST[prefix].''.$_POST[phone];
$sql="INSERT INTO testtab (fbName, fbId, fbComment, name, email, phone)
VALUES('$_POST[fbName]','$_POST[fbID]','$_POST[fbComment]','$_POST[name]','$_POST[email]','$fullPhone')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
mysqli_close($con);
我從您的其他評論之一中收集到您正在SET NAMES
來設置字符集:
$con->query("SET NAMES 'utf8'");
但是,顯然,您將需要使用mysqli_real_escape_string
或將值手動綁定到?
SQL中的占位符,以保護自己免受SQL注入攻擊以及在字段中更無辜地使用撇號。
但是,如果執行參數的mysqli_real_escape_string
,則可能需要使用mysqli_set_charset
而不是上面的SET NAMES
SQL:
$con->set_charset('utf8');
另一方面,如果您使用?
解決了SQL注入問題?
SQL中的占位符,然后使用mysqli_stmt_bind_param
將值綁定到那些占位符,那么我不認為如果使用mysqli_set_charset
或SET NAMES
SQL語法也mysqli_set_charset
。
有關SET NAMES
和mysqli_set_charset
之間不同行為的注釋,請參見“ 字符集概念”討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.