简介:我正在尝试在我的网站上进行sql-injection证明登录,所以我使用mysqli bind param,我已经按照官方手册中的说明创建了查询php.net,不幸的是它没有按预期工作。
这是我的查询代码:
//Asign post to variables
$var1 = $_POST["email"];
$var2 = $_POST["pwd"];
if(isset($_POST['submit'])){
//Query SQL
$sql = $mysqli->prepare("SELECT * FROM main WHERE email = ? AND pass = ?");
$sql->bind_param("ss", $var1, $var2);
$sql->execute();
$sql->bind_result($email, $pass, $license);
$sql->fetch();
echo $email;
echo $pass;
echo $license;
}
因此,这段代码应该回显它从我的数据库中提取的三个字段,但它不会返回任何内容。我的数据库连接非常好,因为这个查询在没有任何类型的bind_param的情况下运行良好。
总结,我想知道为什么它不回应我从Sql查询得到的3个值(它们显示为不存在)
编辑我的错误是我正在使用“bind_result”而不是“get_rersult”,如果您选择所有内容会更好(*)
答案 0 :(得分:-1)
编辑:抱歉,我没有注意到您正在使用mysqli连接
您可以使用 get_result 代替 bind_result
$sql = $mysqli->prepare("SELECT * FROM main WHERE email = ? AND pass = ?");
$sql->bind_param("ss", $var1, $var2);
$sql->execute();
$rows = $sql->get_result();
$row = $rows->fetch_assoc();
$email = $row['email'];
$pass = $row['pass'];
$license = $row['license'];