元搜索查询的问题

时间:2013-09-04 06:28:20

标签: php mysql

我在我的PHP代码中使用fckeditor类。

好的,当我在搜索框中搜索或输入p时,它将打印特定表中包含的所有记录('p'是fckeditor的问题)。

我有一个章节组合和一个文本框。在我搜索任何关键字之前,它确实有效,但现在没有。昨天我发布了这个问题,我得到了答案,但问题是当我搜索任何关键字时,它无法显示与该问题相关的记录。它只显示进入该章节字段后的章节相关问题。

为了进一步说明,如果我在下拉列表中输入文本字段'p'和1,那么它将打印第1章中的所有问题,但是当我输入任何关键字时它不起作用。

我的代码是:

<?php
if (isset($_POST['submit'])) {
    if (empty($_POST['fname'])) {
        die ("<script type='text/javascript' > alert('PLEASE ENTER KEYWORD...!!!');</script>");
    } else {
?>..................................
<?php
        include("conn.php");
        $name  = $_POST['fname'];
        $name2 = $_POST['chapter'];
        /*This query searches all records with duplicate entry....*/
        //$sql="SELECT  * FROM $user WHERE question like '%".$name."%' and 
        //Chapter   like'%".$name2."%' ";

        /*This query searches all records without duplicate entry....*/
        $sql = "SELECT * FROM $user WHERE question like '%" . $name . "%' and 
        Chapter like '$name2'";

        $result = mysql_query($sql) or die(mysql_error());
        while ($row = mysql_fetch_array($result)) {
?>

我又有一个问题。当我写第一个查询评论重复条目时,如果我输入第1章然后它将打印1,11,21章记录,它将适用于每个任务。我的意思这个查询能够搜索所有记录的关键字明智记录或'p',但是一个1,11,21,12是一个问题。在我的第二个查询中,它只会按照我之前的说法打印分段记录。所以请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我真的很难理解你的问题,所以我会从你之前应该听到的一些一般性建议开始:

  • 请尝试使用mysqli或PDO
  • 您的代码对sql注入攻击持开放态度。您应该使用预准备语句,或者至少在所有用户输入上使用mysqli_real_escape_string。
  • 无需将已发布的变量重新分配给$ name或$ name2。
  • 不要忘记mysql表名是区分大小写的。保持案例使用的一致性可能是明智的,因为这有助于未来的代码编写。

您的SQL查询,翻译成英文说:

查找变量$ user中命名的表中的所有列,其中列chapter完全等于变量$ name2,列question的文本为$ name1连续字符串,不区分大小写,文本中的某处。

如果这就是你想要的,那就是你将得到的。

我想知道你的问题是你的章节查询的任何一方缺少%吗?

考虑:

$sql="SELECT * FROM $user WHERE question LIKE '%$name%' AND Chapter LIKE '%$name2%'";

 $sql="SELECT * FROM $user WHERE question LIKE '%$name%' AND Chapter = '$name2'";

如果达到了预期的结果,那么您可以继续并删除sql注入漏洞。

如果你提供一些样本数据,也许是一个小提琴和一些所需输出的例子,我相信这里的社区将很乐意提供帮助。这些都适用于任何语言。