0

我在我的 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 是一个问题。在我的第二个查询中,它只会打印我之前所说的章节记录。所以请帮助我这个问题。

4

1 回答 1

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 注入漏洞。

如果您提供一些示例数据,也许是小提琴和一些所需输出的示例,我相信这里的社区会很乐意提供帮助。这些在任何语言中都能很好地工作。

于 2013-09-04T07:11:57.360 回答