php - 从 PHP(使用 mysqli)为 MySQL 准备语句

标签 php mysql mysqli prepared-statement

我在 MySQL 数据库中有这些表:

CREATE TABLE `product` (
`idProduct` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`category` varchar(255) NOT NULL,
PRIMARY KEY (`idProduct`)
);

CREATE TABLE `sale` (
`idSale` int(10) unsigned NOT NULL AUTO_INCREMENT,
`highDate` date NOT NULL,
`idProduct` int(10) unsigned NOT NULL,
`idUser` varchar(45) NOT NULL,
PRIMARY KEY (`idSale`)
);

我想得到一个表格,其中用户在行中,产品在列中,就像这个问题: MySQL Pivot row into dynamic number of columns

SQL Fiddle (Demo)工作正常,但我需要帮助使用 mysqli 从 PHP 查询它。

这是正确的吗?

$this->dbh->query("SET @sql = NULL");
$stmt = $this->dbh->query("SELECT GROUP_CONCAT(DISTINCT
                          CONCAT(
                          'count(case when category = ''',
                          category,
                          ''' then 1 end) AS ',
                          replace(category, ' ', '')
                       )
                    ) INTO @sql
                FROM product;");

$stmt = $this->dbh->prepare("SET @sql = CONCAT('SELECT s.idUser, ', @sql, ' FROM sale s
                            LEFT JOIN product p ON p.idProduct = s.idProduct
                            GROUP BY s.idUser');");

$stmt->execute();

如何从查询中检索数据? Execute() 方法返回 TRUE 或 FALSE。

最佳答案

用它来获取结果

while ($stmt->fetch()) {
    //code
}

http://php.net/manual/en/mysqli-stmt.fetch.php

关于php - 从 PHP(使用 mysqli)为 MySQL 准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12704205/

相关文章:

php - 未捕获的类型错误 : Cannot read property 'replace' of null

php - 用户@localhost 的访问被拒绝

php - 从 iOS 使用 POST 将数组传递给 PHP

mysql - Rails 从 WEBrick 而非 Passenger 连接到 MySQL

php - 无法弄清楚如何运行 mysqli_multi_query 并使用上次查询的结果

php - 无法访问其他文件中的 mysqli 连接对象?

php - 图像 blob 上的 GROUP_CONCAT?

mysql - 在 MySQL 中存储 IP 地址的最有效方法

php - 使用 PHP 爆炸来自 mysql 的数据

javascript - sql create语句中如何使用变量名作为表名