如何在我的网站上搜索这样的;如果访问者选择输入用户名,表只显示用户名、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注入的另一个向量。