【问题标题】:Creating a search filter with PHP使用 PHP 创建搜索过滤器
【发布时间】:2015-12-31 17:54:24
【问题描述】:

所以我坚持这个,

    <input type="text" name="search">
    <select>
    <option value="Name">Name</option>
    <option value="Address">Address</option>
    <option value="company_address">company_address</option>
    <option value="contact_number">contact_number</option>
    </select>
<input type="submit">

<?php
include "connect.php";
$sql = "SELECT * FROM propertydetail";
x
?>

我的问题是,我如何使用 PHP 从我的数据库中选择一行填充信息,通过查询让我们说出我的一个选项中的选项“名称”。 我需要它来回显该名称中的所有信息,即使它在我的数据库表中多次给出。

$output = NULL;
$output .= '<div>'. $name . $address .'</div>';

echo $output;

我可以使用我的 php 中的表格更好地格式化它, 所以基本上我要问的是,我将如何选择 “数据库中的行”

只查询一个名字。提前致谢。我只是一个初学者,所以不要太苛刻地评价我。

【问题讨论】:

  • 你是问如何在SQL中使用WHERE关键字?
  • 使用 WHERE 和 LIKE。并确保使用参数而不是生成字符串。
  • 询问如何使用下拉选择来选择一行信息。

标签: php html mysql


【解决方案1】:

这是非常基本的 MySQL 语法。查看代码学院。假设您的数据库列名与您的 select 选项中的值匹配。一个非常基本的搜索应该是这样的:

<form METHOD="POST"><? // need to use POST and close form also at the end. ?>
    <input type="text" name="search">
    <select NAME="searchtype">...</select><? // Important you name the select! ?>
        <option value="Name">Name</option>
        <option value="Address">Address</option>
        <option value="company_address">company_address</option>
        <option value="contact_number">contact_number</option>
    </select>
    <input type="submit">
</form>

<?php
include "connect.php";
$type = mysqli_real_escape_string($_POST['searchtype']);
$search = mysqli_real_escape_string($_POST['search']);

$sql = "SELECT * FROM propertydetail WHERE ".$type." LIKE '%".$search."%'";

?>

【讨论】:

  • SQL 注入。馊主意。将此答案与我的结合起来。
  • mysqli_real_escape_string() 函数不能避免注入吗?无论哪种方式,都只是试图显示WHERELIKE 语法。 mysqli 库仍然没有太多工作。
  • 它有帮助,但它不是万无一失的。无论如何,由于这个答案包含了我遗漏的东西,我建议将它与我的结合起来。
  • 罗杰。感谢您的信息。
【解决方案2】:

您需要从表单提交中获取您的 $name。然后生成一个 SELECT 语句来抓取所有匹配它的记录。

$name = mysqli_real_escape_string($mysqli,$_POST['name']);

        $stmt = $mysqli->prepare('SELECT * FROM `youTable` WHERE `name`=?');
        $stmt->bind_param("s", $name);
        $stmt->execute();

如果您选择是否搜索名称、城市等...您需要相应地更新您的代码。

【讨论】:

    猜你喜欢
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2020-11-22
    • 1970-01-01
    相关资源
    最近更新 更多