【问题标题】:trying to search through sql data shown in php, not working试图搜索 php 中显示的 sql 数据,不工作
【发布时间】:2014-01-08 12:59:57
【问题描述】:

您好,我有一个 SQL 数据库,其中包含有关属性的信息。在此之上,我有一个搜索按钮,它搜索 propertyLocation 字段以显示相关的。

例子:

Property ID 1, 5 Bedroom House, London
Property ID 2, 3 Bedroom House, Scotland
Property ID 3, 2 Bedroom Flat, Cardiff.

在顶部,我要做的就是进行搜索,如果用户键入“london”,则只会显示属性 ID 1。我似乎无法让它工作!我的代码如下:

显示属性和搜索框:

<table id="propertyTable">

    <form method="post" action="search.php">
        <input type="text" name="search" />
        <input type="submit" name="submit" value="   Search   ">
    </form>

    <th>Property ID</th>
    <th>Property Name</th>
<?php   
        $result = mysql_query("SELECT * FROM Property");
        while ($row = mysql_fetch_array($result))
            {
                $pID = $row['pID'];
                $pLocation = $row['pLocation'];

                echo "<tr data-row='$pID'><td>$pID</td>";
                echo "<td>".$pID."</td>";
                echo "<td>".$pLocation."</td>";
            }
?>
</table>

Search.php 代码:

<?php

$sql="SELECT * FROM Property
WHERE pLocation like '$search%'";

$result=mysql_query($sql, $db) or die(mysql_error());


while ($row=mysql_fetch_array($result))
{
$pID=$row["pID"];
$pLocation=$row["pLocation"];
}
?>

请注意,我在顶部连接到我的数据库。第一个表单确实显示了属性,但是搜索不起作用。

任何帮助将不胜感激!

  • 我不断收到错误,使用未定义的常量搜索和未定义的变量 DB...

  • 错误已修复,导致 search.php 但没有显示!当前 search.php 代码为:

    "; echo "".$pID.""; echo "".$pLocation.""; } ?>

【问题讨论】:

  • 你看到$result是否有一些结果了吗?您是否尝试在您的 sql 管理器上启动查询?
  • 如果您在db中的条目是something somethinelse London,并且您搜索London就像London%一样不起作用,您最好尝试%London%
  • 抱歉,我不知道该怎么做。我对此完全陌生..
  • 你在哪里将数据传递给 $search 变量?
  • 试着理解我在说什么。我假设 $search 是用户输入的字符串?因此,如果它是London,它将在您的查询中变为London%,因为在查询中使用了'$search%'。您需要在开始时传递通配符。了解 MySQL LIKE SEARCH

标签: php sql search


【解决方案1】:

您需要从 $_POST 数组中取出您的 $search 变量:

$search = $_POST['search'];

编辑:

看到关于 DB 的第二个错误。你说:“请注意我在顶部连接到我的数据库。”但是如果你得到 $db 未定义,这有一个问题。也许遵循您其他页面上的语法并使用假定的连接,例如:

$result=mysql_query($sql) or die(mysql_error());

在第一页有输出回显。您需要在搜索结果中模仿:

            $pID = $row['pID'];
            $pLocation = $row['pLocation'];

            echo "<tr data-row='$pID'>";
            echo "<td>".$pID."</td>";
            echo "<td>".$pLocation."</td></tr>";

我试图修复一些不稳定的表格结构;第一页好像输出了一长行?

【讨论】:

  • 未定义变量 DB + mysql_query() 期望参数 2 为资源,null 给予
  • 这解决了错误,但现在什么都没有显示:当前搜索代码如下所示:
  • 您的示例代码没有任何显示...我认为它在下面?现在添加它以回答。
  • 您的编辑看起来不像我在此处回答的代码。如果需要,只需从原始页面复制 echo 行并将它们放在 search.php 页面上的同一位置。
【解决方案2】:

尝试以下操作,即使用 POST 值初始化 $search 变量

 <?php

 $search  = trim($_POST['search']);

 $sql="SELECT * FROM Property
 WHERE pLocation like '$search%'";

 $result=mysql_query($sql, $db) or die(mysql_error());


 while ($row=mysql_fetch_array($result))
 {
    $pID=$row["pID"];
    $pLocation=$row["pLocation"];
  }
 ?>

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多