【发布时间】:2020-03-09 04:44:32
【问题描述】:
我正在为一个相对简单的问题而苦苦挣扎,但就是想不通。
我有一个方法getNextRound(),它返回一个数字数组。数字代表 db 表中的周数。
然后我有第二个方法getUpcomingGames() 我调用第一个方法然后我想使用第一个方法中的数字在我的查询中使用。
这是一个示例:方法 1
public function getNextRound(){
$sql = "SELECT min(weekNum) from schedule WHERE schedule.gameDateTime > NOW() GROUP BY tournament ORDER BY gameDateTime ASC";
$stmnt = $this->db->query($sql);
if ($stmnt->num_rows() > 0) {
print_r($stmnt->result());
return $stmnt->result();
}
return false;
}
上述方法/查询的结果
array (size=3)
0 =>
object(stdClass)[24]
public 'min(weekNum)' => string '38' (length=2)
1 =>
object(stdClass)[25]
public 'min(weekNum)' => string '14' (length=2)
2 =>
object(stdClass)[26]
public 'min(weekNum)' => string '7' (length=1)
我现在想使用数组中的数据来获取日程表中包含的与周数相关的所有信息。
我的问题在这里
方法2
public function getUpcomingGames()
{
//HERE I WANT TO GET ALL INFO FROM SCHEDULE WHERE ROUND = $week
$rounds[] = $this->getNextRound();
foreach ($rounds as $round) {
$sql = "SELECT * from schedule WHERE weekNum = '$round' ORDER BY gameDateTime ASC ";
$data[] = $this->db->query($sql);
var_dump($data);
}
错误:除其他外,我得到一个数组到字符串的转换错误。
我查看了 codeigniter 文档,但找不到我要查找的方法。
问题:
CI 中是否有一种查询方法,我可以在其中将数组插入到查询中并循环遍历数组 (),如果这有意义的话?
如何改进/修复上述查询?
【问题讨论】:
-
在第二个中使用 IN QUERY
-
我应该保留
foreach()循环吗? -
那么不需要使用
foreach()。但是在使用IN之后比较结果是否与您现在得到的结果相同? -
@TimothyCoetzee 您实际上需要这两种方法还是很高兴将它们合并为一种优雅的方法?
-
tournament列不包含在您的屏幕截图中。您没有提供完整的架构。您的第二次查询尝试“取消关联”tournament和weekNum- 这意味着下面的所有答案都注定不准确,您需要完全重新考虑您的方法。在此之前,您将使用过去锦标赛的 weekNums 生成结果集。
标签: php mysql sql codeigniter codeigniter-3