使用 PhP 执行准备好的语句

Posted

技术标签:

【中文标题】使用 PhP 执行准备好的语句【英文标题】:Executing prepared statement with 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

【问题讨论】:

【参考方案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 变量中,然后执行: "整个语句变成一个变量" ?!把它放在一个函数中:) 然后从那个函数的结果创建变量。我会用我使用的示例更新答案。

以上是关于使用 PhP 执行准备好的语句的主要内容,如果未能解决你的问题,请参考以下文章

PHP:使用准备好的语句进行注入保护

在 PHP 中创建准备好的语句

在使用准备好的语句执行插入查询后获取自动增量 ID

如何从执行的准备好的语句创建 JSON?

在 pdo 准备好的语句中执行多插入或许多不同的插入更好/更快吗?

使用 PDO 准备好的语句 MySQL 错误