【问题标题】:fetch first column from table从表中获取第一列
【发布时间】:2017-03-27 07:38:24
【问题描述】:

首先感谢您阅读本文。
我正在设置这个功能

function SelectHydross($conn){
    $sql = "SELECT * from HydrossTheUnstable"; 
    $data = $conn->query($sql);

    $title = $data->fetchColumn(1);
    echo '<div><table>';
    echo '<tr>';
    echo "<th>" . $title['BossName'] . "</th>";

这给了我Warning: Illegal string offset 'BossName'
第 70 行是:echo "&lt;th&gt;" . $title['BossName'] . "&lt;/th&gt;";

如果我使用此代码

function SelectHydross($conn){
    $sql = "SELECT * from HydrossTheUnstable"; 
    $data = $conn->query($sql);
    $title = $data->fetch(PDO::FETCH_ASSOC); 
    echo '<div><table>';
    echo '<tr>';
    echo "<th>" . $title['BossName'] . "</th>";

它会跳过第一列并从第二列开始。
我目前不知道任何出路,我想寻求帮助!

这就是我的桌子的样子

【问题讨论】:

  • fetchColumn 获取单个列值。单列值不是数组。
  • 我们都知道这件事的结局。
  • 还有 fetchColumn();是一个从零开始的索引。所以fetchColumn(2); 将是GuildName阅读手册 这就是它的用途
  • 请参阅此问答PDO fetch one column from table into 1-dimensional array。您还可以在 SELECT 中使用带有偏移量的 LIMIT。
  • 您还需要告诉我们您期望得到什么结果以及应该回显什么。

标签: php sql database class pdo


【解决方案1】:

正如我在 cmets 中概述的(我不会重复)(您可以阅读这些内容),您可以将 LIMIT 与可以跳过一行的偏移量一起使用。

即:LIMIT 1,10 在 SELECT 语句中。

手册:

例子:

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

【讨论】:

    【解决方案2】:

    如评论中所述,fetchColumn 以一行为目标并返回一个值,而不是数组。

    替换这一行:

    $title = $data->fetchColumn(2);
    

    $title = $data->fetch(PDO::FETCH_ASSOC);
    

    您的第一个解决方案将起作用。

    编辑:如果没有,也许您正在获取此行之前的结果。 PDOStatement::fetch 返回行集的第一行,它不会从第二行开始。

    【讨论】:

    • $title = $data-&gt;fetchColumn(1); 获取BossMan 列(从零开始的索引)
    • OP: "如果我使用此代码 - $title = $data-&gt;fetch(PDO::FETCH_ASSOC);... 它确实会跳过第一列并从第二列开始。我不知道有什么出路时刻” - 嗯……他们不是已经在使用了吗?
    • 嗯,我都试过了,但都跳过了第一列,正如你在我的第二个代码中看到的那样,我已经尝试过了。并感谢@RiggsFolly 的提示
    • @Max Bit 更新。正如我从一开始就根据my original comment over an hour ago 所怀疑的那样。只是想你想知道。解决方案是使用带偏移量的 LIMIT。这可能会在某个时候为您/其他人服务 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2013-09-03
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多