第一次处理我需要从一个表中提取数据的项目(比如200个记录/结果),并根据该结果集中某个列的结果,我需要查询其中一个我的其他5个表(我需要查询的表在我做出第一个查询之前没有定义)
我目前的印象是我无法使用某种类型的JOIN来执行此操作,因为在第一组结果返回之前我无法知道需要加入哪个表。
所以我提出的解决方案如下(为简单起见,示例代码)
$FirstTableVals = array();
$sql = ("SELECT * FROM TABLE_A");
$run = $con->query($sql);
if($run->num_rows > 0)
{
while($row = $run->fetch_assoc())
{
foreach($row as $key => $value)
{
$FirstTableVals[$key] = $value;
}
$valueToSwitch = $FirstTableVals["VAL_TO_SWITCH"];
//$SecondTable can be 1 of 5 different table names
$SecondTable = $FirstTableVals["SECOND_TABLE_TO_QUERY"];
switch ($valueToSwitch)
{
case"1":
$sql = ("SELECT * FROM $SecondTable WHERE SOME_COLUMN = SOME_VALUE");
$run = $con->query($sql);
if($run->num_rows > 0)
{
while($row = $run->fetch_assoc())
{
//save some values from the second table
}
}
//echo the results of TABLE_A and second table
break;
case"2":
$sql = ("SELECT * FROM $SecondTable WHERE SOME_OTHER_COLUMN = SOME_OTHER_VALUE");
$run = $con->query($sql);
if($run->num_rows > 0)
{
while($row = $run->fetch_assoc())
{
//save some values from the second table
}
}
//echo the results of TABLE_A and second table
break;
default:
break;
}
}
}
现在,我遇到的问题是,其中一个" Second"在执行" Second"之后的所有内容后执行sql查询循环时,它将跳出while循环并回显我的值,但在不中断switch语句然后再次运行的情况下停止,因为" First" sql查询循环。
从本质上讲,这似乎仅适用于" TABLE_A"而不是再次循环并使用" Second"执行switch语句。 sql查询" TABLE_A"。
中的每条记录如果其中任何一项没有任何意义,请告诉我,我会尽力详细说明可能令人困惑的事情。
对我来说真的很难过,因为在我看来应该按照我的预期运行。
答案 0 :(得分:2)
你覆盖了$FirstTableVals = array();
$sql = ("SELECT * FROM TABLE_A");
$run1 = $con->query($sql);
if($run1->num_rows > 0)
{
while($row = $run1->fetch_assoc())
{
foreach($row as $key => $value)
{
$FirstTableVals[$key] = $value;
}
$valueToSwitch = $FirstTableVals["VAL_TO_SWITCH"];
//$SecondTable can be 1 of 5 different table names
$SecondTable = $FirstTableVals["SECOND_TABLE_TO_QUERY"];
switch ($valueToSwitch)
{
case"1":
$sql = ("SELECT * FROM $SecondTable WHERE SOME_COLUMN = SOME_VALUE");
$run2 = $con->query($sql);
if($run2->num_rows > 0)
{
while($row = $run2->fetch_assoc())
{
//save some values from the second table
}
}
//echo the results of TABLE_A and second table
break;
case"2":
$sql = ("SELECT * FROM $SecondTable WHERE SOME_OTHER_COLUMN = SOME_OTHER_VALUE");
$run3 = $con->query($sql);
if($run3->num_rows > 0)
{
while($row = $run3->fetch_assoc())
{
//save some values from the second table
}
}
//echo the results of TABLE_A and second table
break;
default:
break;
}
}
}
变量,这就是它打破循环的原因。请更改您的代码:
~/.local/bin