gpt4 book ai didi

php - Mysql/PDO 问题

转载 作者:行者123 更新时间:2023-11-30 01:21:13 24 4
gpt4 key购买 nike

我正在尝试使用 PDO 转换我的网站,这样对于 sql 注入(inject)来说更安全。

我在这里遇到问题,因为我正在检查用户名是否尚未注册:

这是我的 sql atm:

function isregistered($var,$methode) {
$check1 = mysql_result(mysql_query("SELECT COUNT(gebruikersnaam) FROM leden_temp WHERE ".$methode."='".$var."'"),0);
$check2 = mysql_result(mysql_query("SELECT COUNT(id) FROM leden WHERE ".$methode."='".$var."'"),0);

$check = $check1 + $check2;

if($check == 0) {
return FALSE;
} else {
return TRUE;
}
}

我正在尝试将其转换为 sql 作为 pdo 语句:

$check1 = $dbh->query("SELECT COUNT(gebruikersnaam) FROM leden_temp WHERE ".$methode."='".$var."'');

但是我有点不知道这实际上是如何与 PDO 一起工作的?你们能帮我一点吗?

最佳答案

如果您选择使用准备好的语句,会更安全。

$check1 =  $db->prepare('SELECT * FROM leden_temp WHERE gebruikersnaam = :var');
$arr1 = array(
':var'=>$var
);
$check1->execute($arr1);
$row_count_check1 = $check1->rowCount();



$check2 = $db->prepare('SELECT * FROM leden WHERE gebruikersnaam = :var');
$arr2 = array(
':var'=>$var
);
$check2->execute($arr2);
$row_count_check2 = $check2->rowCount();



$check = $row_count_check1 + $row_count_check2;

if($check == 0) {
return FALSE;
} else {
return TRUE;
}

这样就可以更容易地防止 SQL 注入(inject)

我认为您正在使用 Murfy's login-system ,因此,如果您想使用相同的查询来检查电子邮件地址是否已注册,则需要将 'gebruikersnaam' 更改为 'email'。

关于php - Mysql/PDO 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510903/

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