tl; dr - 推送数组($ array []或$ array [$ id]在Kohana 3中不起作用,它会显示一个空白页。
我正在使用Kohana(3),这是我第一次体验MVC,到目前为止一直很棒;但是,我正在使用一个数据库,遇到一个奇怪的问题,我希望有人能说清楚:
我的工作流程是这样的,让您了解我遇到的问题:
$sql = "SELECT table1.row1, max(table2.row1) as `maxAwesome` FROM table1, table2 WHERE table1.id=table2.table1id GROUP BY table1.id";
$table1Results = DB::query(Database::SELECT, $sql)->execute();
$masterArray = array();
foreach ($table1Results as $result1)
{
$sql = "SELECT * FROM table2 WHERE table2id='" . $result1['id'] . "' AND column > 21";
$table2Results = DB::query(Database::SELECT, $sql)->execute();
$subArray = array();
foreach ($table2Results as $result2)
{
$subArray[$result1['id']] = $result2;
// Even had just $subArray[] = array("whatever");
}
$masterArray[] = array("table1Data" => array(), "table2Data"=> $subArray);
}
我做了一个查询,我运行了几个最大/最小函数,然后在foreach中做一个查询,做另一个选择,以我想要的方式构建一个数据的主数组,所有SQL等工作正常和花花公子;但是,当我推动阵列时会出现问题。
似乎每当我通过执行$ array [] = array(“data”)来推送数组时;或者通过指定键$ array [$ id] = array(“data”); Kohana给了我一个直空白页,没有错误,没有输出等。
有时我会得到一个Kohana错误,表明该密钥不存在(呃,我正在创建它),但是大多数情况下输出都是直白色。
为什么会这样?我错了吗?
提前致谢。
清晰度编辑:
除了我的SQL失误之外,问题在于构建辅助数组,例如:
$queryStores = "SELECT stores.store_id, stores.title, max(product.discount) as `max_discount`, min(product.discount) as `min_discount`
FROM stores, products
WHERE products.store=stores.store_id
GROUP BY products.store";
$stores = DB::Query(Database::SELECT, $queryStores)->execute();
$formattedStores = array();
if (count($stores))
{
foreach ($stores as $store)
{
$formattedStores[$store['store_id']] = array(
"title" => $store['title'],
);
// Same result if just doing $formattedStores[] = array();
// Problem goes away should I do:
// $formattedStores = array("This works");
//
}
}
echo "<pre>";
print_r($formattedStores);
echo "</pre>";
那不打印数组,它只是给出一个空白页;但是,如果我改变它只是重新设置$ formattedStores数组,我得到一个输出。什么是推动导致问题的数组,也许是Kohana错误?
由于
答案 0 :(得分:0)
您的代码应该是: -
$sql = "SELECT table1.id, table1.row1, max(table2.row1) as `maxAwesome`
FROM table1, table2
WHERE table1.id = table2.table1id
GROUP BY table1.id";
$table1Results = DB::query(Database::SELECT, $sql)->execute();
$masterArray = array();
if (count($table1Results))
{
foreach ($table1Results as $result1)
{
$sqlInner = "SELECT * FROM table2
WHERE table2id = '" . $result1['id'] . "'
AND column > 21";
$table2Results = DB::query(Database::SELECT, $sqlInner)->execute();
$subArray = array();
if (count($table2Results))
{
foreach ($table2Results as $result2)
{
$subArray[$result1['id']] = $result2;
// Even had just $subArray[] = array("whatever");
}
}
$masterArray[] = array("table1Data" => array(), "table2Data"=> $subArray);
}
}
一些有价值的编码标准&amp;错过: -
id
”字段(w.r.t。“table1
”数据库表。)$sqlInner
”。if
”语句进行了简单的检查。 希望它有所帮助。
答案 1 :(得分:0)
我已经确定这与记忆有关。