按输入选择搜索


Search by input select

如何在我的网站上搜索这样的;如果访问者选择输入用户名,表只显示用户名、id或性别。

我想我应该添加一些东西而不是*,但我找不到。你能帮我吗?

foreach($db->query('SELECT * FROM uyeler ORDER BY RAND()LIMIT 20') as $row)

感谢
<div class="body">
<div class="table"
        <select>
          <option value="id">ID</option>
          <option value="user">Username</option>
          <option value="sex">Sex</option>
          <option value="country">Country</option>            
          <option value="age">Age</option>
          <option value="twitter">Twitter</option>
          <option value="instagram">Instagram</option>            
          <option value="snapchat">Snapchat</option>
       </select>
            <input type="text" name="searchbox">
            <input type="submit" value="Search"><input type="submit" value="Refresh"></br></br>
        <table align=center width="1200">
          <tr>
            <th>ID</th>
            <th>Username</th>
            <th>Sex</th>
            <th>Country</th>
            <th>Age</th>
            <th>Twitter</th>
            <th>Instagram</th>
            <th>Snapchat</th>
            <th>Details</th>
        </tr>
        <?php
        foreach($db->query('SELECT * FROM uyeler ORDER BY RAND()LIMIT 20') as $row) {
                echo "<tr><td>" .$row['id'] . "</td>";
                echo "<td>" .$row['username'] . "</td>";
                echo "<td>" .$row['sex'] . "</td>";
                echo "<td>" .$row['country'] . "</td>";
                echo "<td>" .$row['age'] . "</td>";
                echo "<td>" .$row['twitter'] . "</td>";
                echo "<td>" .$row['instagram'] . "</td>";
                echo "<td>" .$row['snapchat'] . "</td>";
                echo ('<td><a href="details.php?id=' .$row['id'] . '" title="Panel">Details</a></td>');
                echo "</tr>";
            }
        ?>
</table>
</div>

如果需要表中的所有字段,则需要*。但是,您应该在查询末尾使用WHERE username = '{$username}',将结果限制为仅请求的用户名。

如果有多个条件,从您的$_GET$_POST请求中获取键和值,并为您的WHERE子句做WHERE {$key1} = '{$val1}' AND {$key2} = '{$val2}'等。如果所有条件都必须适用,则使用AND,如果任何条件都符合匹配条件,则使用OR

请确保在将传入的用户名请求插入查询之前对其进行消毒。还要清理键(最好根据预定义的列表进行检查),在这种情况下,这是SQL注入的另一个向量。