如何选择带有外语的mysql查询?

Posted

技术标签:

【中文标题】如何选择带有外语的mysql查询?【英文标题】:how to select mysql query with foreign language? 【发布时间】:2012-02-28 19:11:41 【问题描述】:

让我简单地告诉你

 SELECT * FROM dictionary WHERE malayalam = 'ആകാശം'

此查询在 phpmysql 上运行良好,同时在 .php 页面上查询时未检测到原始数据

我只是在建立一个英语到马拉雅拉姆语和马拉雅拉姆语到英语词典

网站是http://www.chatfitness.com/

在英文单词的基础上从 mysql 接收马拉雅拉姆语单词。

不幸的是接收英文单词不能正常工作:(

我对这两个函数使用相同的查询 这是用英文单词搜索的代码

if(isset($_GET['en']))

    $english = $_GET['en'];
    mysql_query ("set character_set_results='utf8'"); 
    $result=mysql_query("SELECT * FROM en_table WHERE word = '$english' LIMIT 1"); 
    $numrows=mysql_num_rows($result);

    if($numrows!=0)
        $row = mysql_fetch_array($result);
        $english_id = $row['en_id'];
        
        //select malayalam id which are matching with english id
        $en_query = mysql_query("SELECT * FROM dictionary WHERE english = '$english_id'"); 
        //$en_rows = mysql_fetch_array($en_query);
                
        while($en_rows = mysql_fetch_array($en_query))
        $en_malayalam = $en_rows['malayalam'];
        mysql_query ("set character_set_results='utf8'");
            $ml_query=mysql_query("SELECT * FROM ml_table WHERE ml_id = '$en_malayalam'");
            while($ml_rows = mysql_fetch_array($ml_query))
            echo $ml_rows['word'];
            echo "<br />";
            
        
        
    
    else
        echo "<p>നിങ്ങള്‍ അന്വേഷിക്കുന്ന " . $english . " എന്ന പദത്തിന്റെ അര്‍ഥം കണ്ടെത്താനായില്ല.</p> 
        <p>സാധ്യമെങ്കില്‍, ദയവായി നിഘണ്ടുവില്‍ ചേര്‍ക്കുക.</p>";
    

与我使用马拉雅拉姆语搜索的方式相同

elseif(isset($_GET['ml']))
    $malayalam = $_GET['ml'];
    mysql_query ("set character_set_results='utf8'");
    $results=mysql_query("SELECT * FROM ml_table WHERE 'word'= '$malayalam' LIMIT 1"); 
    
    $numrow=mysql_num_rows($results);
    echo $numrow ;

   //here is the problem $numrow always zero :( 
    if($numrow!=0)
        $row = mysql_fetch_array($results);
        $malayalam_id = $row['ml_id'];
        //echo $malayalam_id ;
        //select malayalam id which are matching with english id
        $ml_query = mysql_query("SELECT * FROM dictionary WHERE malayalam = '$malayalam_id'"); 
        //$en_rows = mysql_fetch_array($en_query);
                
        while($ml_rows = mysql_fetch_array($ml_query))
        $ml_english = $ml_rows['malayalam'];            
            $ml_query=mysql_query("SELECT * FROM en_table WHERE en_id = '$ml_english'");
            while($ml_rows = mysql_fetch_array($ml_query))
            //echo $ml_rows['word'];
            echo "<br />";
            
            
    else
        echo "We do not have meaning of $malayalam at the moment. <br /> Could you add your word pls";
    


else
    die("please select search value");

我从 mysql 搜索过什么 $numrow=mysql_num_rows($results); numrows 始终为零:( 你能帮我解决这个问题吗

我被困在这里:( 提前致谢

【问题讨论】:

mysql_query 之后尝试mysql_error 并得到错误,然后修复它。 @FedyaSkitsko 当使用 SELECT * FROM dictionary WHERE malayalam = 'ആകാശം' 当我使用相同的代码 phpmyadmin mysql 这样的 SELECT * FROM dictionary WHERE malayalam = 'ആകാശം 结果为零时很好不幸的是它没有在php中显示结果 @FedyaSkitsko 我的意思是它不可能有错误。不检测该行:( 您的代码很容易受到 SQL 注入攻击。切勿在未验证和转义的情况下使用用户提供的 inout。 @GordonM 实际上我的问题很简单。我刚刚在顶部编辑了问题。我尝试了很多方法,不幸的是我失败了:( 【参考方案1】:

您应该尝试以下方法之一:

1.) 使用mysql_set_charset('utf8', $dbconn); 代替mysql_query() 如http://php.net/manual/en/function.mysql-set-charset.php 所示

2.) 按照SET NAMES utf8 in MySQL? 中的建议使用query("set names utf8");

【讨论】:

我都试过了,但韩文仍然输出为 ud638\ud638\ud638\ud558\ud558\ud558\ud558。还有其他解决方案吗? @coolcool1994 看看这个***.com/questions/11182047/… 我从 mysql 服务器本身添加了韩语。所以我可以从韩国存在的mysql服务器上看到它。当我运行 php 文件以显示 mysql 数据库中的所有元素 SELECT * FROM TableName 时,韩语返回为 ud638\ud638\ud638\ud558\ud558\ud558\ud558 将你的 1) 2) 添加到我的 php 文件并没有解决这个返回韩语的问题。我从网上调用我的 php 文件,因为这是第一个,最好的测试方法。并且韩语不返回

以上是关于如何选择带有外语的mysql查询?的主要内容,如果未能解决你的问题,请参考以下文章

在mysql中,如果表存在,如何避免选择

如何将带有子选择的 SQL 查询转换为 MDX 查询?

如何将带有子查询的 MySQL select 语句转换为同一张表的更新语句?

如何在带有子查询的列中“更新选择”某些值?

MySQL查询以选择带有日期的记录

在 Ubuntu 终端中运行带有连接的 MYSQL 选择查询 [关闭]