【问题标题】:Fetching single row, single column with PDO使用 PDO 获取单行单列
【发布时间】:2009-11-03 11:18:04
【问题描述】:

我有一个针对单行中的单个列的 mysql 查询

"SELECT some_col_name FROM table_name WHERE user=:user"

执行$stmt->execute(); 语句后,如何将这个单元格直接放入没有循环的变量中?换句话说如何获得

from $stmt->execute();

to $col_value = 100;

我尝试了下面的 2,但都没有成功。原始表中的列是第 4 列,但我假设因为在我的选择语句中我只选择它,所以当我指定参数时它应该是 1对于 fetchColumn。

$col_value = $stmt->fetchColumn();
$col_value = $stmt->fetchColumn(0);

如您所见,我试图用尽可能少的行来完成。

【问题讨论】:

    标签: php mysql database pdo


    【解决方案1】:

    您确定它会返回任何行吗?

    $stmt->fetchColumn()
    

    是获取单个值的正确方法,因此您可能没有绑定 :user 参数,或者它只是没有返回任何行。

    【讨论】:

    • 谢谢大家,原来是数据库本身的问题。我知道它应该一直在工作
    【解决方案2】:

    当您想获得最后一个插入时,您将 DESC 限制 1 添加到 sql 语句中。

    $sql = "SELECT `some_col_name` FROM table_name\n"
    
        . "ORDER BY `some_col_name` DESC\n"
    
        . "LIMIT 1";
    
    $stmt = $conn->prepare($sql);
    $result = $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    //convert the array content to string and store in variable 
    $col = implode(" ", $row);
    echo $col;
    

    【讨论】:

      【解决方案3】:
      $sql='SELECT some_col_name FROM table_name WHERE user=?';
      
      $sth=$pdo_dbh->prepare($sql);
      $data=array($user);
      
      $sth->execute($data);
      
      $result=$sth->fetchColumn();
      

      【讨论】:

        【解决方案4】:

        我不知道为什么这么多人搞砸了:

        $stmt = $dbh->prepare("SELECT `column` FROM `table` WHERE `where`=:where"); 
        $stmt->bindValue(':where', $MyWhere);
        $stmt->execute();
        $SingleVar = $stmt->fetchColumn();
        

        确保您在查询中选择了特定的column 而不是*,否则您需要在fetchColumn() 中指定列顺序号,例如:$stmt->fetchColumn(2); 这通常不是一个好主意因为数据库中的列可能会被某人重新组织......

        这只适用于unique 'wheres'fetchColumn() 不会返回数组。

        【讨论】:

          【解决方案5】:

          你先准备好声明了吗? (之前$stmt->execute()

          $stmt = $db->prepare("SELECT some_col_name FROM table_name WHERE user=:user");
          

          【讨论】:

            【解决方案6】:

            你可以用这个:

            $stmt->fetch(PDO::FETCH_COLUMN, $number_of_column);
            

            【讨论】:

            • 为什么你推荐这种方式?它在做什么?
            • @KevinPanko: 是一样的,但我喜欢这种方式,它将我模型中的代码规范化,调用 fetch() 或 fetchAll() 并使用类似 : column 的参数,两者都......跨度>
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-23
            • 2013-12-21
            • 2012-08-19
            • 2012-12-11
            • 1970-01-01
            相关资源
            最近更新 更多