我有一个小问题。我使用两个mysql查询来获取数据。 首先,我想从组中获取ID
$sqlGoups = "SELECT * from `groups` WHERE `Date`='$TodayDate' ";
$result = $conn->query($sqlGoups);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$IDgroups = $row["ID"];
这样,我将获得这些ID,例如5、7、12、15、22
我想将它们全部放在下一个mysql查询中:
$sqlNext = "SELECT * FROM `orders` WHERE ID = '$IDgroups' ORDER BY `ID` ASC ";
$result = $conn->query($sqlNext);
执行此操作时,仅获得第一个ID(5)的结果。我想要每个人
我无法使用INNER JOIN表,因为我在下一个查询中使用了该表。
我尝试了foreach循环,但没有效果。
答案 0 :(得分:0)
尝试此代码
SELECT * FROM `orders`
WHERE ID REGEXP CONCAT('(^|,)(', REPLACE('$IDgroups', ',', '|'), ')(,|$)')
ORDER BY `ID` ASC
答案 1 :(得分:0)
就像@Elanochecer所说的那样,最好的选择应该是JOIN语句,但是如果您希望通过自己的路线,则可以使用IN并将ID作为逗号分隔的字符串提供,您的查询应类似于以下查询:
...
$sqlNext = "SELECT * FROM orders WHERE ID IN ('$IDgroups') ORDER BY ID ASC ";
...
还要确认$ IDgroups是否采用1,2,3,4格式
如果您提供了架构,我可以为您提供一个可行的JOIN语句,最好您可以使用架构创建一个仓库