gpt4 book ai didi

php - PDO,使用带转义的 PDO 获取内容并回显它

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

我正在尝试使用以下代码从 get 变量中获取结果,我使用了另一个代码(在下面列出)并且它有效但是在使用它时无法逃脱,我不知道我有什么做错了,但我需要帮助,我刚刚开始 PDO,所以是的,我是个白痴 :D 但我想学习。

if (isset($_GET['id'])) {
$id = $_GET['id'];
$q = "SELECT * FROM users WHERE id=:id";
$query = $odb->prepare($q);
$results = $query->execute(array(
":id" => $id
));
if($result-> rowCount()>0) {
foreach($result as $item) {
echo $item['user'];
}
}
}

有效但没有转义的代码:

$id = $_GET['id'];
$query = "SELECT * FROM users WHERE id=".$id."";
$result = $odb->query($query);
if($result->rowCount() > 0) {
foreach($result as $item) {
echo $item['user'];
}
}

谢谢和 PS,如果这是一个愚蠢的问题,那不是因为我才 13 岁,而且我不认为 12 岁或 13 岁的 child 提出的任何关于代码的问题都可以被认为是愚蠢的。请告诉我我做错了什么。

谢谢!

最佳答案

您需要重写结果循环(包括 if { } 语句在内的所有内容)如下:

while (($item = $results->fetch(PDO::FETCH_ASSOC)) !== FALSE) {
echo $item['user'];
}

您真的不需要调用 rowCount() 除非您特别需要结果集之前的行数。如果没有结果,循环将立即失败,因为第一次调用将返回 FALSE,并且循环将在没有任何迭代的情况下结束。

编辑(调试步骤):

如果你使用它,你会看到什么?我在想也许你有一个额外的字符(一个空格)或 $_GET['id'] 中的某些东西,当你将它作为文字传递时是合法的,但当你将它作为参数传递时则不是:

if (isset($_GET['id'])) {
$id = $_GET['id'];
die(var_export($id, TRUE));
}

关于php - PDO,使用带转义的 PDO 获取内容并回显它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287192/

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