【问题标题】:Executing prepared statement with PhP使用 PhP 执行准备好的语句
【发布时间】:2013-07-25 12:56:02
【问题描述】:

我还是 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

【问题讨论】:

    标签: php mysql prepared-statement executequery


    【解决方案1】:

    当我使用这样的准备语句时,我会从 sql 所在的函数返回 fetchAll。这会返回一个包含所有数据的数组。

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

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

    等等等等

    编辑:

    <?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'] 中的值是指数据库中字段的名称,因此请确保它们匹配

    【讨论】:

    • 好的,我把整个语句放在 $data 变量中,然后执行: ' 。 $data['name'] 。 ?> 进行测试,我只收到一封类似结果的字母。这是我应该做的吗?
    • "整个语句变成一个变量" ?!把它放在一个函数中:) 然后从那个函数的结果创建变量。我会用我使用的示例更新答案。
    猜你喜欢
    • 1970-01-01
    • 2015-02-27
    • 2015-06-27
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2013-07-27
    相关资源
    最近更新 更多