我想从表中获取所有数据并将其显示在html表中,但是我不确定如何使用准备好的语句来保护我免受sql注入。
我读过它应该看起来像:
$getPlayers = $db->prepare("SELECT * FROM Player WHERE name = :name");
但是我不确定如何使用“ WHERE”方法从数据库中获取所有数据。
到目前为止,这是我的代码。它可以正常工作并获取我所有的数据,但我认为它不受sql注入的影响,对吗?
$getPlayers = $db->prepare("SELECT * FROM Player");
$getPlayers->execute();
$players = $getPlayers->fetchAll();
echo "<table>";
echo "<tr><th>Name</th><th>Games Played</th><th>Tries</th></tr>";
foreach( $players as $row) {
echo "<tr>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['games_played']."</td>";
echo "<td>".$row['tries']."</td>";
echo "</tr>";
}
echo "</table>";
最佳答案
SQL注入只是需要将用户输入的数据发送到数据库的问题。
像SELECT * FROM Player
这样的查询不包含用户数据。因此,从SQL Injection完全是安全的。
实际上,在这种情况下,使用准备好的语句没有任何好处。当一个准备好的语句执行时,它将对数据库进行两次调用。
你可以这样做:
$getPlayers = $db->query("SELECT * FROM Player");
foreach ($getPlayers as $player) {
// do something
}
没有准备,没有绑定,只有一个对数据库的调用。
关于php - PDO-使用准备好的语句将所有sql数据放入html表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21152145/