2017-02-20 43 views
0

這是我的第一個php代碼,它可能會充滿問題:)
我想註冊訪問我的網站的人的信息。我的主要問題是,SQL中的FARSI單詞沒有正確註冊並顯示錯誤的字符。 我試圖使用N來使它unicode,但它不適合我。也許我錯了。 我也試過給每個人一個獨特的ID,但我無法想象如何。 我的FARSI零件的sql排序規則是utf8波斯語ci。我正在使用phpmy管理員,並試圖在其中創建nvarchar,但它只提供varchar。
這是我的第一個問題和第一個PHP代碼,所以請原諒我如果它太基本了。用戶在php和sql中註冊。波斯語輸入

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Untitled 1</title> 
</head> 

<body> 
<?php 
$name = $_POST["name"]; 
$familyname = $_POST["familyname"]; 
$email = $_POST["email"]; 
$phone = $_POST["phone"]; 
$pass = $_POST["pass"]; 
$pass2 = $_POST["pass2"]; 
$id = 100; 

// Remove all illegal characters from email 
$email = filter_var($email, FILTER_SANITIZE_EMAIL); 

// Validate e-mail 
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === true) { 
echo("$email صحیح نمی باشد"); 
} else { 


$con = mysqli_connect("localhost","","","register"); 

$name = mysqli_real_escape_string($con, $_POST['name']); 
$familyname = mysqli_real_escape_string($con, $_POST['familyname']); 
$email = mysqli_real_escape_string($con, $_POST['email']); 
$phone = mysqli_real_escape_string($con, $_POST['phone']); 
$pass = mysqli_real_escape_string($con, $_POST['pass']); 
$pass2 = mysqli_real_escape_string($con, $_POST['pass2']); 



mysqli_query($con,"INSERT INTO users (`name17`, `familyname17`, `email17`, `phone17`, `pass17`, `id17`) VALUES ('$name', '$familyname', '$email', '$phone', '$pass', '$id')"); 

$result = mysqli_query($con,"select * from users where email17 ='$email' and pass17 = '$pass' and familyname17 = '$familyname'") 
    or die("faild to query database".mysql_error()); 
$row = mysqli_fetch_array($result,MYSQLI_BOTH); 

if (empty($name) || empty($familyname) || empty($email) || empty($phone) || empty($pass) || empty($pass2)) { 
echo "لطفا اطلاعات را بطور کامل وارد فرمایید"; 
} 
else { 
if ($row['email17']==$email && $row['pass17'] == $pass2){ 
echo "<body style='direction: rtl !important;'>"; 
echo "<b>".$row['name17']." <b>"; 
echo "عزیز. خوش آمدید<br> "; 
echo '<img src="images/takhfif.jpg" alt="تخفیف" />'; 
} else { 
echo "خطا در ثبت نام.لطفا دوباره تلاش کنید"; 
} 
} 

} 



?> 
</body> 

</html> 
+0

嘗試utf8_general_ci – Shan

+0

問題已經在這裏找到答案http://stackoverflow.com/questions/6642755/insert-a-persian-text-in-mysql-table:
$con = mysqli_connect("localhost","db_user","db_pass","db_name"); 連接到數據庫使用此代碼後, –

+0

[在mysql表中插入一個波斯語文本]可能的重複(http://stackoverflow.com/questions/6642755/insert-a-persian-text-in-mysql-table) – carmine

回答

0

確保您使用的是UTF8。
將數據庫整理更改爲utf8_general。這應該工作。
我在學習php時遇到了同樣的問題。

+0

謝謝賽義德,但它不適用於我我不明白爲什麼 – Noshad70

0

大家好,謝謝你的回答。 如果找到解決我的問題。對於有同樣問題的人,請將排序規則設置爲utf8 general或unicode。但是你也必須將你的輸入設置爲utf8。我插入了下面的代碼來做到這一點。 我希望這可以幫助,如果你有問題請問。 我使用mysqli但正常的mysql連接幾乎相同。 mysqli_set_charset($con,"utf8");