我知道参数化语句和转义数据是防止SQL注入的好习惯。但我很想看到它在行动,所以我建立了一个数据库来看。问题是我一直收到错误或没有正确注入。
$ans = $_POST['answer'];
$query = "SELECT username from `members` where password = '$ans'";
$c = $db ->query($query);
$c=$c->fetch(PDO::FETCH_ASSOC);
echo $c['username'];
我尝试了典型的&1;或1 = 1'注射及其变化,我不断提出取消错误或根本不工作。
答案 0 :(得分:-2)
$sql="SELECT username from `members` where password = :mypassword";
// Create prepared statement
$stm = $db->prepare($sql);
$stm->bindParam(':mypassword', $ans, PDO::PARAM_STR);
$stm->execute();
echo $stm->fetchColumn();