【问题标题】:searching data from DB php [closed]从 DB php 搜索数据 [关闭]
【发布时间】:2018-03-10 06:07:25
【问题描述】:

我在 home.php 中有搜索框

<form action ="search.php" method = "post">

<input name="search" type="text" size="30" placeholder="...."/>

<input type="submit" value="Search"/>

<?php print ("$output");?>

还有serach.php文件

<?php
require_once("class.user.php");
require_once("class.db.php");
$output = '';

if(isset($_POST['search'])) {
$search = $_POST['search'];
$search = preg_replace("#[^0-9a-z]i#","", $search);

$connection = new DB_con();

$query = $mysqli->query("SELECT * FROM users WHERE username LIKE '%".$search."%' AND email LIKE '%".$search."%'") or die ("Could not search");
$result =$mysqli->query($connection, $query);
$count = $result->num_rows;

if($count == 0){
  $output = "There was no search results!";

}else{

  while ($row = $result->fetch_array($query)) {

    $username = $row ['username'];
    $email = $row ['email'];


    $output .=$username.''.$email;

  }

}
}
?>

我有几个错误。 注意:未定义变量:第 12 行 search.php 中的 mysqli

致命错误:未捕获的错误:在 null 上调用成员函数 query() 在 \search.php:12 堆栈跟踪:#0 {main} 在 search.php 中抛出在线 12

【问题讨论】:

  • 这就是你需要的$query = "SELECT * FROM users WHERE username LIKE '%".$search."%' AND email LIKE '%".$search."%'"); $result =$mysqli-&gt;query($connection, $query); 考虑也使用准备好的语句
  • $connection = new DB_con(); 咳咳!
  • @MasivuyeCokile 还是一样。我听说过准备好的陈述,但我还是初学者,这是学习过程 :) 感谢您的建议!
  • 另外,您查询了两次,我可能会添加错误的变量。
  • 您似乎将$connection 定义为与数据库的主要连接,然后您使用$mysqli 而不定义它。考虑做类似$db = new mysqli('hostname', 'username', 'password', 'dbname'); $results = $db-&gt;query('query'); 的事情。您正在将面向对象的编程与过程编程混合在一起。您可以阅读manual 并了解有关 msqli 以及连接到数据库的不同方式的更多信息。

标签: php mysql oop mysqli


【解决方案1】:

$mysqli 未定义,因此您收到错误消息,并且您正在执行两次查询。

<?php
require_once("class.user.php");
require_once("class.db.php");
$output = '';

if (isset($_POST['search'])) {
    $search = $_POST['search'];
    $search = preg_replace("#[^0-9a-z]i#", "", $search);

    $connection = new DB_con();

    $query = "SELECT * FROM users WHERE username LIKE '%" . $search . "%' AND email LIKE '%" . $search . "%'";
    if ($result = $connection->query($query)) {
        if ($result->num_rows > 0) {
            while ($row = $result->fetch_assoc($query)) {

                $username = $row['username'];
                $email    = $row['email'];


                $output .= $username . '' . $email;

            }
        } else {

            $output = "There was no search results!";
        }


    } else {

        printf("Errormessage: %s\n", $connection->error);
    }

}
?>

【讨论】:

    猜你喜欢
    • 2014-02-10
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多