【问题标题】:Change value of returned PDOStatement [closed]更改返回的 PDOStatement 的值 [关闭]
【发布时间】:2022-01-06 03:27:54
【问题描述】:

我有一个函数getMaxID,它查询数据库(消息)并获取最大id

我想把返回的PDO语句中唯一一行的值名改成max_id

问: 我该怎么做?

这里是代码

function getMaxID() {
   $result = $db->query("SELECT * FROM messages ORDER BY id DESC LIMIT 1");
   //here is where I want to edit $result's name field
   return result
}

$maxID = getMaxID()
$row = $maxID->fetch(PDO::FETCH_ASSOC);
echo "id: " . $row["id"]. " - Name: " . $row["name"] . "<br>";

我想得到

id:(无论最大 id 是多少)- 名称:max_id

而不是(上面的例子会产生什么)

id:(无论最大 id 是什么) - 名称:(无论最大 id 行的名称是什么)

我有什么

我实际上有一种工作方式,那就是

-使用更新将表中的名称值更改为max_id

-从表中选择最大id(这是我返回的)

-使用更新将名称改回原始值

但是,这非常笨拙,我相信有比修改数据库更好的方法来做到这一点

我的另一个最佳尝试是在 getMaxID() 中编辑行值

所以新代码看起来像这样

function getMaxID() {
   $result = $db->query("SELECT * FROM messages ORDER BY id DESC LIMIT 1");
   $row = $result->fetch(PDO::FETCH_ASSOC);
   $row['name'] = 'max_id'
   //This returns an empty result PDO statement
   //Is it possible to add row back to PDO statement ($return)???
   return result
}

$maxID = getMaxID()
$row = $maxID->fetch(PDO::FETCH_ASSOC);
echo "id: " . $row["id"]. " - Name: " . $row["name"] . "<br>";

这个解决方案几乎可以工作,但问题是它返回一个空的 PDO 语句

由于您正在获取 PDO 语句的第一行,而 PDO 语句只有一行

有没有办法将行 ($row) 添加回 PDO 语句 ($result)? (如果是这样,这个解决方案会起作用)

【问题讨论】:

  • 您是否只是想为列名分配一个 ALIAS,或者究竟是什么?

标签: php sql


【解决方案1】:

如果我理解了这一点,您可以使用这样的查询:

SELECT MAX(id) as id, 'max_id' as name from messages

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 2012-12-10
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多