gpt4 book ai didi

php - 将标准 MySQL 查询更改为 'prepared' MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 11:31:43 25 4
gpt4 key购买 nike

我在将“标准”MySQL 查询更改为准备好的语句以防止 SQL 注入(inject)等方面遇到问题。

下面是给我错误的代码,

第二个 SQL 查询是我正在尝试执行的查询,
(没有注释掉的)

    <?php 
include('../db_connect.inc');
$username = $_POST['username'];
$password = $_POST['password'];
$hashedPassword = md5($password);






//$query = $conn->query("Select * from dog_parks.members where username = '$username' and password ='$hashedPassword' ");
//$count = $query->rowcount();
//$row = $query->fetch();


$query = $conn->prepare("Select * from dog_parks.members where username = :username_login and password = :password_login ");
$query->bindParam(':username_login', $username);
$query->bindParam(':password_login', $hashedPassword);
$count = $query->rowcount();
$row = $query->fetch();
$query->execute();







if ($count > 0){
session_start();
$_SESSION['id'] = $row['username'];
header('location:home.php');
} else {
?>
<script>
alert("Incorrect Details. Check your User Name or Password.")
window.location="../index.php";
</script>
<?php
}
?>

执行以下代码后,我收到 JavaScript 警报,提示密码不正确,这可能是由于不满足 if 语句中的第一个条件

关于我哪里出错了有什么想法吗?

最佳答案

我按如下方式执行准备语句(基于您的代码):

$query = $conn->prepare("SELECT * FROM table WHERE username = :username");
$query->execute(array(':username' => $username));
$queryRow = $query->fetch(PDO::FETCH_ASSOC);

我发现将它放入数组中更容易。

关于php - 将标准 MySQL 查询更改为 'prepared' MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37289241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com