【发布时间】:2014-07-17 16:14:04
【问题描述】:
我正在尝试创建一个搜索功能,该功能将检索我们在网站上创建的不同海报的搜索结果。如果一个人正在搜索让我们说“狗”,那么它将显示与狗有关的海报。该网站将以海报的形式发布不同的活动。
目前的代码如下:
<?php
class Search
{
public static $con;
private $search = '';
function __construct()
{
self::$con = mysqli_connect('localhost', 'guest', 'guestpw', 'db_users');
$this->search = mysqli_real_escape_string(self::$con, $_POST['search']);
}
if(isset($_POST['submit_search']))
{
$sql = mysqli_query($con, "SELECT * FROM Event WHERE eventNamn LIKE '%" . $search);
$sql = mysqli_query($con, "SELECT * FROM Användare WHERE userName LIKE '%" . $search);
$sql = mysqli_query($con, "SELECT * FROM Poster WHERE Kategori LIKE '%" . $search);
$sql = mysqli_query($con, "SELECT * FROM EventTyp WHERE EventTyp LIKE '%" . $search);
$result = mysqli_query($sql);
}
}
我现在要做的是使用用户正在搜索的搜索词,然后显示与该词关联的事件。 非常感谢所有帮助!谢谢。
【问题讨论】:
-
你每次都替换变量 $sql 所以只有最后一个会被执行
-
首先,您一遍又一遍地重新分配
$sql变量。然后搜索变量上的对象范围错误(您应该改用$this->search)。 -
@mplungjan 所说的,每次你给 $sql 赋予新的含义时,你都会覆盖它。因此,前一个将“消失”,因此当您创建第 4 个 $sql 时,只有一个“存在”。
-
您在查询中的所有变量中都缺少单引号。
-
考虑也使用准备好的语句——像这样直接构建查询字符串是不安全的。 ca3.php.net/manual/en/mysqli.prepare.php