gpt4 book ai didi

php - 获取值中的点(句号)会破坏 SQL 查询 (PDO)

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

我使用 PDO 从 MySQL 数据库获取结果,并使用 $_GET 请求方法中的值作为条件。一切正常,但如果 $_GET 值中有任何句点(点),MySQL 将返回 0 行。

这是我的示例:

<?php
function filter($val) {
$f = htmlentities($val);
$f = filter_input(INPUT_GET, $f);
return strip_tags($f);
}

$dev = filter("dev");

function DevFetch($dev) {
$q = $this->link->prepare("SELECT app FROM table WHERE dev = ?");
$q->bindValue("1", $dev);
$q->execute();
if($q->rowCount() > 0) {
return $q->fetchAll();
} else {
return false;
}
}
?>

以下是一些示例。

案例1:

results.php?developer=Google+Inc // works fine

案例2:

results.php?developer=Google // works fine

案例3:

results.php?developer=Google+Inc. // doesn't work with dot at the end

请帮忙解决这个问题。请注意,我正在对 $_GET 值进行编码 (urlencode()),并使用 filter_input() 函数对其进行过滤。没有过滤/编码也不起作用。

最佳答案

由于您使用准备好的语句,因此不需要 filter 函数。

就这么简单:

 function DevFetch($dev) {
$q = $this->link->prepare("SELECT app FROM table WHERE dev = ?");
$q->bindValue(1, $dev);
$q->execute();
$result = $q->fetchAll();
if(count($result) > 0) {
return $result;
} else {
return false;
}
}

$input = $_GET["dev"];
DevFetch($input);

关于php - 获取值中的点(句号)会破坏 SQL 查询 (PDO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306418/

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