我有一个非常简单的登录系统,用于我们在工作场所内部使用的网络应用程序。做一些修复,我试图通过使用msqli->来减少代码的脆弱性。出于某种原因,在登录代码上,这会导致完全失败。这是旧代码:
$email = $_POST['email'];
$upass = $_POST['pass'];
$stmt = $sqlCon->query("SELECT * FROM users WHERE email='$email'");
$row = mysqli_fetch_array($stmt);
$stmt->close();
echo $row['password']; //this is just for debug!
这很有效。它根据用户'用户'检查用户的电子邮件。并返回结果数组就完美了。
所以,我试图用准备声明替换它:
$email = $_POST['email'];
$upass = $_POST['pass'];
$sql = "SELECT * FROM users WHERE email='?'";
$stmt = $sqlCon->prepare($sql);
$stmt->bind_param('s', $email);
$stmt->execute();
$row = mysqli_fetch_array($stmt);
$stmt->close();
echo $row['password']; //this is just for debug!
我已经尝试过准备声明,无论是否有''周围?并且都不起作用。我在mysqli_fetch_array()上得到一个错误,它需要一个myqsli_result,而是得到一个对象......这似乎意味着查询没有返回任何内容?
显然,我不了解某些事情是如何运作的,所以任何帮助都会很棒。