【问题标题】:values are not being returning from the database PHP没有从数据库 PHP 返回值
【发布时间】:2015-05-13 14:31:57
【问题描述】:

这里是新的,我对这个问题束手无策。借口很简单;我正在尝试根据会话 cookie 中的值从数据库中选择用户 ID。我已经确认 SQL 工作正常,就像我通过 sql 本身运行它一样,我唯一能想到的是它没有执行或者我的 fetch 或 bind 错误。

<?php
session_start();
$cart = $_SESSION["cart"];

try{
require "connect.php";
$id = "SELECT id_no FROM eCustomer WHERE surname = :uid";
echo $id . '<br />';

$idfetch=$dbh->prepare($id);
$idfetch->bindValue(":uid", $_SESSION["uid"]);
$idfetch->execute();

$customer_id = $idfetch["id_no"];

echo $customer_id;

$dbh=null;

} catch (PDOExeption $e){
   echo $e;
}
?>

这应该回显到我的浏览器

SELECT id_no FROM eCustomer WHERE surname = :uid
1

但它只是输出

SELECT id_no FROM eCustomer WHERE surname = :uid

我也尝试过将会话变量直接放入sql语句中而不使用bindValue

$id = "SELECT id_no FROM eCustomer WHERE surname = '" . $_SESSION["uid"] . "'";

哪个输出到我的浏览器

SELECT id_no FROM eCustomer WHERE surname = 'Mclellan'

(Mclellan 在我的会话 cookie 中)

任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql pdo fetch execution


    【解决方案1】:

    您实际上已经执行了该语句,但您实际上还没有-&gt;fetch()ed 它。你错过了那部分:

    $results = $idfetch->fetchAll(PDO::FETCH_ASSOC);
    // print_r($results);
    foreach($results as $row) {
        echo $row['id_no'];
    }
    

    旁注:

    如果您只需要一行,那么单个 -&gt;fetch() 调用就足够了:

    $row = $idfetch->fetch(PDO::FETCH_ASSOC);
    echo $row['id_no'];
    

    【讨论】:

      【解决方案2】:

      您似乎错过了实际获取结果的过程

      您需要在$idfetch-&gt;execute(); 之后添加如下一行

      $customerid = $idfetch->fetch(PDO::FETCH_ASSOC);
      

      之后你的echo $customerid["id_no"]; 应该可以工作了。

      原因是你让 php 做的只是执行查询而不告诉它从查询中获取结果。

      此外,以上内容适用于使用 PDO,因为它看起来就像您正在使用的那样。如果您使用的是 mysqli,那么这可能无济于事。

      【讨论】:

      • 是的,那部分丢失了:),除了这个答案也是正确的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      相关资源
      最近更新 更多