При создании сводной таблицы с динамическими датами. Я сталкиваюсь с логической стеной, когда речь идет о вставке строки, сгенерированной из моего первого запроса mysql во второй.Передача переменной php в виде строки в mysql как часть SELECT
когда я
echo $rowstring
эхо генерирует
SUM(IF(`InvDate`='20160106', round(InvTotalIncl,2), 0)) AS `20160106`,
SUM(IF(`InvDate`='20160107', round(InvTotalIncl,2), 0)) AS `20160107`
Тестирование выхода через следующий запрос:
select InvOperCode,
SUM(IF(`InvDate`='20160106', round(InvTotalIncl,2), 0) )
AS `20160106`,
SUM(IF(`InvDate`='20160107', round(InvTotalIncl,2), 0))
AS `20160107`
FROM `invoice_hdr_tbl`
where InvDate between '20160101' and '20160131'
group by InvOperCode
Я получаю желаемый результат.
Однако, когда я пытаюсь передать первый запрос в виде строки для второго запроса через
$result = mysql_query("select InvOperCode,'.$rowstring.'
FROM `invoice_hdr_tbl`
where InvDate between '20160101' and '20160131'
group by InvOperCode");
Я получаю сообщение об ошибке «Запрос, чтобы показать поля из таблицы не удалось» Какая моя строка кода, так что я знаю есть ошибка с моим вторым запросом db.
if (!$result) {
die("Query to show fields from table failed");
Я думаю, что я не получаю преобразование строки правильно и или цитирование переменной в «выбрать» часть моего запроса.
Любая помощь будет оценена по достоинству.
PS Я оставил
echo $rowstring;
в своем коде, чтобы определить точку, в которой я Просмотр запроса и о том, эхо, как правильно. По какой-то причине он тогда не соответствует правильному запросу моего db
Вот мой код.
$resultlength = mysql_query("SET SESSION group_concat_max_len = 1000000");
$concatresult = mysql_query("
select group_concat(distinct CONCAT('SUM(IF(`InvDate`=\'',`InvDate`,'\', round(InvTotalIncl,2), 0)) AS `',`InvDate`,'`'))
as Data
FROM `invoice_hdr_tbl`
where InvDate between '20160101' and '20160131'
order by InvDate");
if (!$concatresult) {
die("Query to show fields from table failed");
}
$rowarray = mysql_fetch_assoc($concatresult);
$rowstring = $rowarray['Data'];
echo $rowstring;
$result = mysql_query("select InvOperCode,'.$rowstring.'
FROM `invoice_hdr_tbl`
where InvDate between '20160101' and '20160131'
group by InvOperCode");
if (!$result) {
die("Query to show fields from table failed");
}
$fields_num = mysql_num_fields($result);
echo "<h1>Sales Report </h1>";
echo "<table border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
while($row = mysql_fetch_row($result))
{
echo "<tr>";
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
mysql_free_result($result);