【问题标题】:How to filter data from a MySQL Database Table with PHP如何使用 PHP 从 MySQL 数据库表中过滤数据
【发布时间】:2015-03-04 12:35:36
【问题描述】:

我正在尝试编写一个搜索框来搜索我的数据库中的一列。如果搜索与该列匹配,则该记录将打印在下表中。

我正在搜索包含公司记录所在县的列。没有显示任何错误,但是当我搜索数据库中的县时,该表仍为空白。我看不出我在理论上做错了什么我认为代码应该可以工作!任何帮助将不胜感激。

DBconnect.php

<?php
// connect to the database
$db = 'stylecraft_dev';
$host = 'localhost';
$user = 'stylecraft_admin';
$password = '000000';

$dbConn = mysql_connect($host,$user,$password) or die("Failed to connect to database");
$result = mysql_select_db($db, $dbConn) or die("Failure selecting database");
?>

form.php

        <?php
            $sql = "SELECT * FROM member ";

            if (isset($_POST['search'])) {

                $search_term = mysql_real_escape_string($_POST['search-box']);

                $sql .= "WHERE MB_COUNTY = '{$search_term}' ";
            }

            $query = mysql_query($sql) or die(mysql_error());
            ?>

            <form name="search_form" method="POST" action="stockists.php">
            Search: <input type="text" name="search_box" value=" "/>
            <input type="submit" name="search" value="Search the stockists...">
            </form>

            <table width="70%" cellpadding="5" cellspace="5">

            <tr>
                <td><strong>Company Name</strong></td>
                <td><strong>Website</strong></td>
                <td><strong>Phone</strong></td>
                <td><strong>Address</strong></td>
            </tr>

            <?php while ($row = mysql_fetch_array($query)) {?>
            <tr>
                <td><?php echo $row['MB_COMPANY'];?></td>
                <td><?php echo $row['MB_MOBILE'];?></td>
                <td><?php echo $row['MB_PHONE'];?></td>
                <td><?php echo $row['MB_COUNTY'];?></td>
            </tr>

            <?php } ?>
            </table>

【问题讨论】:

    标签: php mysql database filter


    【解决方案1】:

    试试:

                $search_term = mysql_real_escape_string($_POST['search_box']);
                $sql .= "WHERE MB_COUNTY LIKE '%".$search_term."%'";
    

    输入名称不匹配 - search-boxsearch_box

    $_POST['search-box']&lt;input type="text" name="search_box" value=" "/&gt;

    您应该尝试回显$search_term$sql 以进行调试。

    【讨论】:

    • 啊,是的,谢谢你,我已经纠正了这个问题,但是问题仍然存在!
    【解决方案2】:

    这里有错别字

    $search_term = mysql_real_escape_string($_POST['search-box']);
    

    必须根据你的形式

    $search_term = mysql_real_escape_string($_POST['search_box']);
    

    【讨论】:

    • 啊,是的,谢谢你,我已经纠正了这个问题,但这并没有解决我的问题!
    • 你能在第一个 if isset() 中放一个回声,它回响了这个国家吗? echo $_POST['search_box'] 检查它是否回显出你想要的结果。然后尝试在 phpmyadmin 上手动查询它是否真的给出了结果。
    • @jonlloyd 就在查询上方, echo $sql 给你什么?如果您复制该确切查询并将其粘贴到 phpmyadmin 中会怎样。
    • 当我去运行查询时,它会产生一个我以前从未见过的错误! SQL 查询:文档 $sql = "SELECT * FROM member "; MySQL 说:文档 #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '$sql = "SELECT * FROM member "' 附近使用正确的语法
    • 这里看看它实际上并没有从 $_POST 搜索框中获取值。该查询不起作用,因为您也有 $sql 。如果您执行 SELECT * FROM member 它将正常工作。
    【解决方案3】:

    搜索框值中有一个空格。

    <input type="text" name="search_box" value=" "/>
    

    如果由于某种原因不是故意的,并且它是通过搜索短语提交的,那么它可能会导致搜索不成功,这意味着如果您正在搜索“Mercedes”但提交它时使用了“Mercedes”之类的空格,那么它是由于空间,不匹配。

    您可以修剪 search_term $search_term = trim($search_term) 或从 value=" " 中删除该空间。

    【讨论】:

    • 刚刚注意到这是 2 年前的。不知道我是怎么来到这个页面的。
    【解决方案4】:

    这是您的代码$sql .= "WHERE MB_COUNTY = '{$search_term}' "

    正确的代码是$sql .= " WHERE MB_COUNTY = '{$search_term}' ";

    **“和where子句之间需要空格**

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      相关资源
      最近更新 更多