我正在用 PHP 编写一个功能,它是一个搜索引擎。
<form action="result" method="POST">
<select name="instrument" id="instrument">
<option value="all">All instrument</option>
<option value="1">Guitar</option>
<option value="2">Bass</option>
<option value="3">Battery</option>
<option value="4">Singer</option>
</select>
<select name="theme" id="theme">
<option value="all">All themes</option>
<option value="1">Metal</option>
<option value="2">Jazz</option>
<option value="3">Rock</option>
<option value="4">Blues</option>
</select>
<input type="submit" value="search" />
</form>
我已经像这样编写了这个搜索引擎并且它有效
<?php
if(isset($_POST)) {
$theme = $_POST['theme'];
$instrument = $_POST['instrument'];
$req_search = $bdd->query("SELECT * FROM user,theme,instrument WHERE theme.theme_id = user.user_theme AND instrument.instrument_id = user.user_instrument AND theme_id =".$theme." AND instrument_id =".$instrument);
if($req_search->rowCount()>0) {
while($search = $req_search->fetch()) {
?>
<p><?php echo $search['user_username']; ?></p>
<?php
}
$req_search->closeCursor();
} else {
echo "Users not found";
}
}
?>
您可以找到与这些选项匹配的用户(没有All instrument
和All theme
。
一切都存储在 MySql 数据库中。
但是,当我单击All themes
和All instrument
时。我想更新我的选择请求。就像我选择 All instrument
和 All themes
我想显示每个用户。或者,如果我选择 All instrument
和 Metal
,我想显示所有听金属和演奏任何乐器的用户。
感谢您的帮助!
最佳答案
您可以根据 $theme
和 $instrument
是否具有值来构建条件查询:
$query = "SELECT * FROM user,theme,instrument
WHERE theme.theme_id = user.user_theme
AND instrument.instrument_id = user.user_instrument".
($theme!="" ? " AND theme_id='$theme'" : "").
($instrument!="" ? " AND instrument_id='$instrument'" : "");
$req_search = $bdd->query($query);
也就是说,你应该看看PDO Prepared Statements和 Placeholders ,因为所有这一切都需要有人摆弄 DOM 来执行一些 MySQL 注入(inject)。
关于php - 选择具有特定 MySql 请求 PHP 的所有用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418347/