2016-06-29 11 views
0

私は行からピボット列を作成しようとしていますが、PHPでいくつかの問題があります。私は、mysqlのコンソールで私のクエリを実行すると、非常にうまく動作し、必要な値を返します。しかし、私はPHPでそれを実行すると、mysqlの構文エラーを返します。私は本当の問題が何であるか把握することができませんでした。エラーメッセージを受信 クエリPHP/CodeIgniterのため PHPの行から動的なピボット列を作成する

SET @sql = NULL; 
SELECT 
    GROUP_CONCAT(DISTINCT 
    CONCAT(
     'sum(case when Ref_Month = ''', 
     Ref_Month, 
     ''' then Total_Income end) AS ''', 
     Ref_Month, '''' 
    ) 
) INTO @sql 
FROM mytable; 

SET @sql = CONCAT('SELECT Tone_Name, ', @sql, ' FROM mytable WHERE Ref_Year in (2015) GROUP BY Tone_Name limit 10'); 

PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

それぞれ普通のMySQLの両方およびPHP用蛇腹である

$query = $this->db->query("SET @sql = NULL;SELECT GROUP_CONCAT(DISTINCT CONCAT('sum(case when Ref_Month = ''', Ref_Month, ''' then Total_Income end) AS ''', Ref_Month, '''')) INTO @sql FROM mytable; SET @sql = CONCAT('SELECT Tone_Name, ', @sql, ' FROM mytable WHERE Ref_Year in (2015) GROUP BY Tone_Name limit 10'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;"); 

であった:

データベース・エラーはエラー番号を発生しました。 1064 Erreur de syntaxe pr 's de' SELECT GROUP_CONCAT(DISTINCT CONCAT( '合計(Ref_Month =' ''、Ref_Month、 '' ligne 1の場合)

誰か助けてください。また、フロントエンド用のHTML/PHPでそのような列と行を表示する方法も知りたい。

ありがとうございました。

+0

Plsは私たちとMySQLの構文エラーを共有しています! – Shadow

+0

こんにちは@Anant、明らかにあなたを取得していません。私の質問はあなたが最初に投稿したようなものです。おかげ – user1915536

+0

は、データベースエラーが エラー番号発生しました:1064 Erreurデsyntaxe PRAS・デ・ 'SELECT GROUP_CONCAT(DISTINCT CONCAT(' 合計(ケース際Ref_Month = ''」、Ref_Month、 '' ア・ラ・LIGNE 1 (ここにあります ファイル名:C:\ wamp \ www \ crbt \ system \ database \ DB_driver.php 行番号:330 – user1915536

答えて

0

1回のquery()メソッド呼び出しで複数のクエリを実行しています。標準のMySQLデータベースドライバでは、1回の呼び出しで複数のSQLクエリを実行する別々のメソッドがありますが、呼び出しごとに1つのsqlコマンドしか実行できない標準呼び出しが使用されます。

は別々のCIクエリ内のSQL文の各呼び出し実行します。

$this->db->query("SET @sql = NULL"); 
... 
$this->db->query("DEALLOCATE PREPARE stmt"); 

あなたは、PHPで自分をすべての文字列の連結を行うことができますが、あなたはすべてのMySQLのプリペアドステートメントを使用する必要はありませんので。

+0

ありがとうShadow。はい私は通常のMySQLのクエリを使用してPHPで文字列の連結をしたいと思ったが、方法が混乱している。 – user1915536

関連する問題