我正在尝试使用以下代码从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岁的问题都不会被认为是愚蠢的问题。请告诉我我做错了什么。
谢谢!
答案 0 :(得分:2)
您需要重写结果循环(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));
}
答案 1 :(得分:0)
if(isset($_GET['id'])){
$id = $_GET['id'];
$q = "SELECT * FROM `users` WHERE `id` = :id";
$query = $odb->prepare($q);
$query->execute(array(
':id' => $id
));
if($query->rowCount() > 0){
foreach($query->fetchAll() AS $item){
echo $item['user'];
}
}
}
我做了一些环顾四周并询问了phpfreaks,他们告诉我这可行,我试过了,它有效。