【问题标题】:Basic search in PHP and MySQLPHP 和 MySQL 中的基本搜索
【发布时间】:2018-04-21 19:23:33
【问题描述】:

他为什么不向我显示数据库中的任何结果?我用的是 Mysqli。

<h1>PC's</h1>
<form id="formPcs" method="POST">
  <input type="name" placeholder="Circutor_xxx">
  <input type="submit" value="Buscar" name="namehost">
</form>
<?php
  $connect = mysqli_connect("localhost","root","","circutor");

  if (@isset($_POST['namehost'])) {

    $viewquery = mysqli_query($connect, "SELECT * FROM hosts WHERE hostname='$_POST[namehost]'");
    if (mysqli_num_rows($viewquery) > 0) {
      while ($listar = mysqli_fetch_array($viewquery)) {
        ?>
          <h3><?php echo $listar['hostname']; ?></h3>
        <?php
      }
    }else{

      echo "NO HAY RESULTADOS EN LA BBDD";
    }

  }else{
    $viewquery = mysqli_query($connect, "SELECT * FROM hosts ORDER BY id ASC");
    while ($listar = mysqli_fetch_array($viewquery)) {
      ?>
        <h3><?php echo $listar['hostname']; ?></h3>
      <?php
    }
  }

 ?>

Este archivo es el que procesa la búsqueda, y no entiendo por qué salta directamente al else, también probado con LIKE de mysql y tampoco me working, necesito。

【问题讨论】:

  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 过程化接口是 PHP 4 时代引入 mysqli API 时的产物,不应在新代码中使用。
  • 警告:使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 编辑您的问题并添加表模式,并显示一些示例数据以及预期的输出。如果还没有打开错误报告,也打开它。由于提供的信息有限,有很多原因没有出现。例如,可能是数据问题。
  • 为什么要在isset() 上使用抑制运算符?
  • 为什么会有非英文文本?为什么不回复其他cmets?

标签: php mysql html search mysqli


【解决方案1】:

您的搜索输入必须具有名称属性。

更改:

<input type="name" placeholder="Circutor_xxx">

收件人:

<input type="name" name="q" placeholder="Circutor_xxx">

相应地,在您的第一个 SQL 字符串中,替换:

$_POST[namehost]

与:

$_POST[q]

【讨论】:

  • 让它工作后,我建议移植你的代码以使用准备好的语句来保证故障安全并防止 sql 注入。
  • 天啊,我在按钮上有名字,你是最棒的 ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 2012-06-25
相关资源
最近更新 更多