用PhP执行准备好的声明

时间:2013-07-25 12:56:03

标签: php mysql prepared-statement executequery

我在PhP中仍然很新,我在这里有这样的陈述:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'GROUP_CONCAT(CASE WHEN `Date` = ''',
      `Date`,
      ''' THEN hours ELSE NULL END) AS `',
      `Date`, '`'
    )
  ) INTO @sql
FROM Days;

SET @sql = CONCAT('SELECT Name, ', @sql,'
                     FROM Days
                    GROUP BY Name
                  ');

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

我正在尝试用Php执行它,所以我有像这个小提琴一样的html表:

http://sqlfiddle.com/#!2/37156/8

1 个答案:

答案 0 :(得分:0)

当我使用这样的prepare语句时,我从sql所在的函数返回fetchAll。这将返回所有数据的数组。

然后我可以在HTML页面中按照我认为适合的格式对其进行格式化:

$data = nameOfYourFunctionThatReturnsFetchAll;

<?php echo '<li>' . $data['nameOfFieldFromDatabase'] . </li> ?>

Etc等

编辑:

<?php 

function getData(){

sql here
try{
execute sql here
}catch PDOException($e){
$e->getMessage();
}
return fetchAll();
}

然后

$data = getData();

然后在你的HTML

<?php echo '<li>' . $data['name'] . </li> ?>

您需要知道$ data ['name']中的值是指数据库中字段的名称,因此请确保它们匹配