1
私はcodeigniterを使用しています。私はクエリで集計関数を使用する必要があります。だから私はこのクエリを持っています。codeigniterでクエリとして文字列変数を使用
私は、単純なforeachループ私はこのクエリ$result = $this->db->query($sql);
の結果を取得しようとすると、今ではそれ以外の場合は、私に構文エラーを与えている
$stock = $this->Kharkaar_Model->get_stockdetail();
$sql = '"SELECT Dated, ';
$numItems = count($stock);
$i = 0;
foreach ($stock as $key => $value)
{
if(++$i === $numItems)
{
$sql.= "CASE WHEN `Account_ID` = ".$value['Account_ID']." then SUM(Total_Bricks) ELSE 0 end as '".$value['AccountName']."', <br />
CASE WHEN Account_ID = ".$value['Account_ID']." then SUM(Kaat_Bricks) ELSE 0 end as '".$value['AccountName']."Kaat' <br /> FROM `tblstockdetail` GROUP BY `Dated`";
}
else
{
$sql.= "CASE WHEN `Account_ID` = ".$value['Account_ID']." then SUM(Total_Bricks) ELSE 0 end as '".$value['AccountName']."', <br />
CASE WHEN Account_ID = ".$value['Account_ID']." then SUM(Kaat_Bricks) ELSE 0 end as '".$value['AccountName']."Kaat', <br /> ";
}
}
$sql.= '"';
て、このクエリを生成している
"SELECT Dated, CASE WHEN `Account_ID` = 2 then SUM(Total_Bricks) ELSE 0 end as 'Nadeem',
CASE WHEN Account_ID = 2 then SUM(Kaat_Bricks) ELSE 0 end as 'NadeemKaat',
CASE WHEN `Account_ID` = 7 then SUM(Total_Bricks) ELSE 0 end as 'Abid',
CASE WHEN Account_ID = 7 then SUM(Kaat_Bricks) ELSE 0 end as 'AbidKaat',
CASE WHEN `Account_ID` = 8 then SUM(Total_Bricks) ELSE 0 end as 'Sajid',
CASE WHEN Account_ID = 8 then SUM(Kaat_Bricks) ELSE 0 end as 'SajidKaat'
FROM `tblstockdetail` GROUP BY `Dated`"
このクエリを直接入力したとき
$result = $this->db->query(// string query here);
正常に動作しています。
あなたは、PHPやMySQLを何構文エラーが出るのですか? – Shadow
SQL構文にエラーがあります。あなたのMariaDBサーバのバージョンに対応するマニュアルをチェックして、正しい構文が近くにあることを確認してください。 ''日付が日付、日付、件名が 'Account_ID' = 2、SUM(Total_Bricks)ELSE 0' 'が行末になります –
あなたは、 'あなたの' select'の前に。 – Shadow