php - 选择具有特定 MySql 请求 PHP 的所有用户

标签 php mysql

我正在用 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 instrumentAll theme

一切都存储在 MySql 数据库中。

但是,当我单击All themesAll instrument 时。我想更新我的选择请求。就像我选择 All instrumentAll themes 我想显示每个用户。或者,如果我选择 All instrumentMetal,我想显示所有听金属和演奏任何乐器的用户。

感谢您的帮助!

最佳答案

您可以根据 $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 StatementsPlaceholders ,因为所有这一切都需要有人摆弄 DOM 来执行一些 MySQL 注入(inject)。

关于php - 选择具有特定 MySql 请求 PHP 的所有用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418347/

相关文章:

mysql - 架构导出失败

javascript - 在 switch case 中出现错误时停止循环 - 在将 header 发送到客户端后无法设置 header

php - SQL从日期以及最低和最高值中选择不同的最小和最大记录

php - Docker - 未创建mysql用户

php - 获取 MySql 数据并将其存储到 Javascript 数组中

mysql - 为 2 个表选择同一列

php - 在 php 和 mySQL 中创建一个文件目录

php - 解析PHPBB3的BB代码

php - 在侧边栏外显示小部件

php - 自动为每一行同一表行内的变量生成索引号?