2016-07-20 3 views
0

助けてください。mysql_queryでmysql文を実行

私はmysqlのクエリを持っている:

SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(mulai = ''',mulai,''', talenta, NULL)) AS ', QUOTE(mulai)) ORDER BY MULAI ASC) INTO @sql FROM history_talenta; 
SET @sql = CONCAT('SELECT nip, nama, DATE_FORMAT(tgl_grade_terakhir,''%d-%m-%Y'') as tgl_grade_terakhir, ', @sql, ' FROM history_talenta GROUP BY nip'); 
PREPARE stmt FROM @sql; 
EXECUTE stmt; 

私はPHPのするmysql_query(からそれを実行したいと思います)が、何も表示されませんが、私はphpMyAdminに介して、それを試みたときにそれが動作し、値を返しました。

は2つのクエリに

+1

「mysql_ *」APIを使用しないでください。廃止されました。 'mysqli_ *'または 'PDO'を使う – Jens

+0

あなたの最初のクエリは' @ sql'に情報を入れています。あなたの2番目のstmtは 'concat()'の中間でそのvarを使って構築しています。あなたはそれを知らないわけではありません。あなたがmysqli_で安全にvarsを使用できるようにする 'heredoc'(またはあなたがそれらのブロックと呼んでいるもの)を表示する' mysqli_'については、私の答え[ここ](http://stackoverflow.com/a/32145480) '。また、 'SET SESSION group_concat_max_len = 10000;'や何らかの値 – Drew

答えて

0

スプリットありがとう:

まずクエリ:$ SQL1変数にするmysql_queryからこのクエリの

SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(mulai = ''',mulai,''', talenta, NULL)) AS ', QUOTE(mulai)) ORDER BY MULAI ASC) FROM history_talenta; 

取得結果、その後、別のSQLを構築

$sql2 = "SELECT nip, nama, DATE_FORMAT(tgl_grade_terakhir,'%d-%m-%Y') as tgl_grade_terakhir, " . $sql1 . ' FROM history_talenta GROUP BY nip'; 

次に、mysql_query($ sql2)を実行します。

注:mysql_queryとすべてのmysql_ *関数は非推奨です。私はmysqli_関数を使用することをお勧めします。

+0

のようなstmtでサイズを設定することで、バッファオーバーフローの問題を調べてください。ありがとうございます、 –

+0

@AriefGrandoようこそ。 – olegsv

関連する問題