【发布时间】: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->query($connection, $query);考虑也使用准备好的语句 -
$connection = new DB_con();咳咳! -
@MasivuyeCokile 还是一样。我听说过准备好的陈述,但我还是初学者,这是学习过程 :) 感谢您的建议!
-
另外,您查询了两次,我可能会添加错误的变量。
-
您似乎将
$connection定义为与数据库的主要连接,然后您使用$mysqli而不定义它。考虑做类似$db = new mysqli('hostname', 'username', 'password', 'dbname'); $results = $db->query('query');的事情。您正在将面向对象的编程与过程编程混合在一起。您可以阅读manual 并了解有关 msqli 以及连接到数据库的不同方式的更多信息。