如何回显mysqli别名列?

Posted

技术标签:

【中文标题】如何回显mysqli别名列?【英文标题】:How to echo out mysqli aliased columns? 【发布时间】:2019-09-01 00:01:44 【问题描述】:

在回显 sql 列时遇到问题,因为我想输出这两个列 来自 sql 语句的别名列,我正在对某些行进行计算。

我已经尝试了下面的代码,并通过将 0 和 1 替换为别名列名、AmountOwed、KindsOfProducts 来修改它,这不起作用。

php 代码 - 问题出在哪里...

$result = $con->query($sql);
if ($result->num_rows > 0) 
    while($row = $result->fetch_assoc()) 
        echo "AmountOwed: " . $row[0]. " - KindsOfProducts: " . $row[1]
        ."<br>";
    
 else 
    echo "0 results";

$con->close();

我试图回应的凌乱的 SQL 语句

@$username=$_POST['username'];      
$sql=  "SELECT SUM(`price` * `quantity`) AS AmountOwed,
COUNT(*) AS KindsOfProducts FROM tablename
WHERE `orderdate` BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW()
and uname = '$username'";

【问题讨论】:

你能出示你的$sql吗? 使用fetch_row 而不是fetch_assoc 一次print_r($row) 在while循环中,我相信你会得到你正在寻找的答案。 fetch_row 和 print_r 不起作用。 @MasivuyeCokile $sql= "SELECT SUM(price * quantity) AS AmountOwed, COUNT(*) AS KindsOfProducts FROM tablename WHERE orderdate BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY ) AND NOW() 和 uname = '$username'"; 【参考方案1】:

我在 Stack 上找到的原始方法是回显 row[0] 等,将 0 替换为列别名。

这最初不起作用的唯一原因是那里有一个小错字,这是正确的代码。

$result = $con->query($sql);
if ($result->num_rows > 0) 
while($row = $result->fetch_assoc()) 
echo "TEXT: " . $row[COLUMNALIAS]. " - MORETEXT: " . $row[COLUMNALIAS]
."<br>";

 else 
echo "0 results";

$con->close();

【讨论】:

您为什么不尝试使用fetch_row,它会以更快的性能完全满足您的要求跨度>

以上是关于如何回显mysqli别名列?的主要内容,如果未能解决你的问题,请参考以下文章

WHERE 语句中的 SQL Server AS 语句别名列

Oracle:如何总结 Oracle 中的别名列

如何使用 PHP 从 mySQLi 查询中回显每一行?

如何在laravel eloquent中为左连接表起别名

SQL 为嵌套选择创建别名列?

多case语句中的别名列名