【发布时间】:2019-11-22 09:50:34
【问题描述】:
嗨,我想在 php 中选择 2 个数字之间的值,我想检查它们是否都存在于 DB 中并且没有错误,但是当我转储它时,它说数组 = 0
我正在尝试使用内部连接在单个查询中获取问题和选项,并在 2 个数字之间选择它们,我检查它们是否在带有 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
【问题讨论】:
-
你为什么同时使用
IN (2, 3, 4, 5, 6)和id >= 2 AND id <= 6?他们都应该做同样的事情。 -
这不会测试是否所有的数字都存在,它只是返回存在的任何一个。
-
这是PDO?如果是这样
prepare不是execute。您还滥用了准备好的语句,参数化。 -
你没有打电话给
$sql->execute() -
您是否尝试直接在数据库中运行该查询?如果是,它返回你想要的数据?
标签: php mysql arrays pdo inner-join