php - 作为连接的结果获取 PHP MySQL PDO 列表名

标签 php mysql pdo

<分区>

我在加入的不同表中有同名的字段。如ticket.statususer.statustransaction.status。目前,查询仅返回 status

如何获取表名以阻止相似的字段名被覆盖,这样我就可以分辨出字段之间的区别。

简单地说:

$data = array($eventId);
$statement = $this->db->prepare("SELECT * FROM ticket, user, transaction 
                        WHERE ticket.eventId = ? 
                        AND ticket.userId = user.userId
                        AND ticket.transactionId = transaction.transactionId");

$statement->execute($data); 
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);

在我的研究中,我发现常量 PDO::ATTR_FETCH_TABLE_NAMES 看起来有帮助,但我不知道如何实现(我假设通过 $statement->setAttribute (); 不知何故)。

我也担心它不会工作,因为 PHP 文档提到它依赖于驱动程序。

谢谢

最佳答案

只需将新别名添加到您的选择语句

$statement = $this->db->prepare("
    SELECT *, ticket.status AS ticket_status, user.status AS user_status, transaction.status AS transaction_status 
    FROM ticket, user, transaction 
    WHERE ticket.eventId = ? 
    AND ticket.userId = user.userId
    AND ticket.transactionId = transaction.transactionId
");

然后你可以做

$rows[0]['user_status'];
$rows[0]['ticket_status'];
$rows[0]['transaction_status'];

如果您真的很在意性能,那么返回的数据量会更大,因此您可以选择每一列而不是添加新的别名,同时在 status 列上放置一个别名.

关于php - 作为连接的结果获取 PHP MySQL PDO 列表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415249/

相关文章:

php - 使用 CFHTTP 将 HTML 表单数组提交给 PHP

php - MySQL 查询字符串包含相反的内容

php - `new` 和 `use` 关键字路径

mysql - 如何修复mysql中的 "warning : Found row where the auto_increment column has the value 0"?

php - MySQL 字符串中的链接似乎不起作用

php - PDO - 对多个 foreach 循环使用相同的查询

php - include_path fatal error xampp

python - Django 保存科学数字

php - 在 shell 中运行连接到 mysql 数据库的 php 脚本

PHP PDO 检查 mySQL 表中的多个列并创建不存在的列