无法用php搜索mysql古兰经数据库中的阿拉伯语

gol*_*615 5 html php mysql unicode

我是网络编程的新手,所以如果我说错了,我会道歉.我正在写一个简单的PHP脚本来搜索阿拉伯语mysql数据库(来自这个网站的Quran数据库http://qurandatabase.org/Database.aspx- mysql查询文件格式 - 阿拉伯语(原文))但我有一个非常简单的问题,这是我在我的PHP脚本中通过GET方法收到的不是我输入的搜索内容,并且在我搜索的字符串中添加了一些不需要的阿拉伯字符.我的代码和输出如下:我的HTML代码是:

 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml" lang="ar" xml:lang="ar">
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
     <body>
         <form action="p.php" method="get" accept-charset="UTF-8">
             Word Search: <input type="text" name="word"/>
             <input type="submit"/>
         </form>
     </body>
 </html>
Run Code Online (Sandbox Code Playgroud)

我的PHP代码是:

<?php
 header('Content-type: text/html; charset=utf-8');
 $DBServer="localhost";
 $DBUser="root";
 $DBPass="1";
 $DB="Quran";
 $DBTable="Quran";
 //echo "Welcome".$_GET["fname"];
 $Word=$_GET['word'];
 echo $Word;
 echo "<br />";
 echo "<br />";
 $con=mysql_connect($DBServer,$DBUser,$DBPass);
 if(!$con)
 {
     die("DB Connection error: ".mysql_error());
 }
 mysql_select_db($DB,$con);
 echo "<br />\n";

 echo "<br />\n";
 echo "<br />\n";
 echo "<br />\n";
 echo "select * from $DBTable where AyahText like '%".$Word."%'";
 echo "<br />\n";
 $select="select * from $DBTable where AyahText like '%???? ?????????? ??????????%'";
 echo $select;
 echo "<br />\n";
 echo "<br />\n";
 $select="select * from $DBTable where AyahText like '%".urldecode($Word)."%'";
 echo $select;
 echo "<br />";
 $result=mysql_query($select);
 //$result=mysql_query("select * from $DBTable where VerseID=$Word");
 $LastSura=1;
 echo $LastSura;
 echo "<br />";
 while($row=mysql_fetch_array($result))
 {
     echo "salam";
     echo $row['SuraID']."\t".$row['VerseID']."\t".$row['AyahText'];
     echo "<br />";
     if($row['SuraID']!=$LastSura)
     {
         echo "<br />";
         echo "<br />";
     }
     $LastSura=$row['SuraID'];

 }
 mysql_close($con);
 ?>
Run Code Online (Sandbox Code Playgroud)

我在我的html文本框中输入此字符串:

منالجنةوالناس

但我得到的这个字符串在输出方面几乎没有差异,你必须自己测试一下:

منالجنةوالناس

选择*来自古兰经,其中AyahText喜欢'%منالجنةوالناس%'

选择*来自古兰经,其中AyahText喜欢'%منالجنةوالناس%'

选择*来自古兰经,其中AyahText喜欢'%منالجنةوالناس%'1

它导致我的搜索失败.

我不知道这个用于提问的复制和粘贴是否保持我的正确输出以正确显示你,但是在我的浏览器中,在我和我的输出中有不想要的或者在我的浏览器中.非常感谢任何帮助.

Mar*_*c B 0

您不需要执行 urldecode()。$_GET当 PHP作为其启动序列的一部分进行填充时,它已经为您完成了这项工作。

请注意,您的代码很容易受到 SQL 注入攻击。正确的搜索顺序是:

$word = $_GET['word'];
$safeword = mysql_real_escape_string($word);  
$sql = "SELECT ... WHERE AyahText LIKE '%$safeword%'";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($rresult)) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

当然,您会在这里收到大量关于不使用 mysql 库的评论,因为它已被弃用。