【问题标题】:PHP - MYSQL not selecting in search queryPHP - MYSQL 未在搜索查询中选择
【发布时间】:2011-10-22 11:10:39
【问题描述】:

我正在构建一个小型测试 php 的东西。我需要能够搜索结果。这很好用。但我似乎无法围绕这个建立一个分页系统。我有点知道如何制作分页系统,但是,我似乎无法做到这一点,因为 mysql 查询不仅搜索 idedu_details 等于 $edu_details 的表记录:

$search_result = mysql_query("SELECT * FROM test WHERE idedu_details='".$edu_details."' AND first_name LIKE '%".$search."%' OR surname LIKE '%".$search."%'");

这是我的完整代码:

$search_result = mysql_query("SELECT * FROM test WHERE idedu_details='".$edu_details."' AND first_name LIKE '%".$search."%' OR surname LIKE '%".$search."%'");

    while($row_search = mysql_fetch_array($search_result)){


                $idedu_detail_check = mysql_query("SELECT * FROM test WHERE idtest='".$row_search['idtest']."'") or die(mysql_error());
                $row_idedu_check = mysql_fetch_array($idedu_detail_check);

                if($row_idedu_check['idedu_details'] == $edu_details){
                $testid = $row_search['idtest'];
                $firstName = $row_search['first_name'];
                $surname = $row_search['surname'];
                $dob = $row_search['dob'];
                $date = $row_search['date'];
                $status = $row_search['status'];
                $link = "report.php?id=$testid";
                $button = '<button onClick="parent.location='. "'".$link."'".'">Analyse</button>';

                echo "<tr>
                    <td width='100'>$firstName</td>
                    <td width='100'>$surname</td>
                    <td width='100'>$dob</td>
                    <td width='100'>$date</td>
                    <td width='100'>$status</td>
                    <td width='100'>$button</td>

                    </tr>";
                }//end if idedu_detail check

            }//end while

        }//end else search != null

我怎样才能围绕这个建立一个分页系统?

编辑:我知道如何制作一个通用的寻呼系统。但是,检查 ided_details = $edu_details 并围绕此构建分页系统会导致问题。

【问题讨论】:

  • 你为什么要做两个选择?我打赌你可以结合这两个查询。

标签: php mysql search pagination


【解决方案1】:

我想你忘了在 WHERE 子句中添加括号:

$search_result = mysql_query("
    SELECT * 
    FROM test 
    WHERE 
        idedu_details='".$edu_details."' AND 
        ( first_name LIKE '%".$search."%' OR surname LIKE '%".$search."%' )
");

请记住,AND 始终优先于 OR

【讨论】:

  • 非常感谢!这立即奏效了!我现在已经让寻呼系统工作了。谢谢。
【解决方案2】:

我认为您是在说您的 SQL 查询正在拉哪里 idedu_details!=$edu_details。尝试在 2 个 OR 周围加上括号:

$search_result = mysql_query("SELECT * FROM test WHERE idedu_details='".$edu_details."' AND (first_name LIKE '%".$search."%' OR surname LIKE '%".$search."%')");

【讨论】:

    【解决方案3】:

    首先,您需要对正在检索的结果设置一个限制。其次,您没有对页面进行分页,尝试一些事情并让我们知道您不能做什么。 :)

    【讨论】:

    • 我已经为不同的页面构建了一个分页系统。但这包括搜索,并确保 idedu_details = $edu_details。我需要知道 while 之外的结果数。
    • 还有一个教程,youtube上如何用PHP分页,这里是链接youtube.com/watch?v=wd4fE5fk-fk
    猜你喜欢
    • 2012-11-12
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多