gpt4 book ai didi

php mysql select函数返回0但没有错误

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

嗨,我想在 php 中选择 2 个数字之间的值,我想检查它们是否全部存在于数据库中并且没有错误,但是当我转储时,它显示 array = 0

我正在尝试使用内部联接在单个查询中获取问题和选项,并在两个数字之间选择它们,我检查它们是否在带有 IN 的数据库中,我得到第一个数字,然后向其添加 6,然后生成所有数字它们之间的数字用于 IN

public function selectquestion($id){
$max = $id + 4;//max selected value

for ($i=$id; $i<=$max; $i++) {
$arr[] = $i;//generates all numbers between min and max
}
$range = implode(",",$arr);
$sql = $this->pdo->prepare("SELECT questions.value,questions.file,questions.img,options.option1,options.option2,options.option3,options.option4,options.answer
FROM options
INNER JOIN questions
ON questions.id = options.q_id
WHERE questions.id >= '$id'
AND questions.id <= '$max'
AND questions.id IN ($range)");//selects all of questions and options where condition is true

$row = $sql->fetchAll(PDO::FETCH_OBJ);
return$row;
}

var_dump($options = $obj->selectquestion(2));

我希望它显示所有问题和选项,但输出为 0

最佳答案

您的主要问题是您从未执行查询。您还应该使用准备好的语句,而不是将变量直接注入(inject)查询中。

检查 ID 是否大于该范围内的最小值、小于最大值和也没什么意义。您只需检查 BETWEEN 即可简化查询并使用正确的准备好的语句。此外,通过使用别名,您可以缩短选择的列。

public function selectquestion($id){
$max = $id + 4; //max selected value

$sql = $this->pdo->prepare("SELECT q.value, q.file, q.img,
o.option1, o.option2, o.option3, o.option4, o.answer
FROM options o
INNER JOIN questions q
ON q.id = o.q_id
WHERE q.id BETWEEN ? AND ?");
$sql->execute([$id, $max]);
return $sql->fetchAll(PDO::FETCH_OBJ);
}

关于php mysql select函数返回0但没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57010162/

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