繁体   English   中英

尝试获取行的id时,PHP为null

[英]PHP null while trying to get id of the row

我遇到了一些奇怪的麻烦

我有这个结果

{"Result":{"id":"1010","venueId":"29","type":"1004","name":"Bacardi"}}

用代码

$statement = $conn->prepare('SELECT * FROM spirits WHERE venueId = :venueId');
            $statement->bindParam(':venueId' , $venueId, PDO::PARAM_INT);
            $statement->execute();

            $row = $statement->fetchAll(PDO::FETCH_ASSOC);
            $spirits = $row;
            $spirit = $spirits[0];
            return json_encode(array('Result'=>$spirit));

现在的问题是

当我尝试做$drinkId = $spirit->id ; 它返回null ..有什么问题?

var_dump($row[0]);

array(4) { ["id"]=> string(4) "1010" ["venueId"]=> string(2) "29" ["type"]=> string(4) "1004" ["name"]=> string(7) "Bacardi" } 

也许是因为你使用了FETCH_ASSOC ,因此调用应该是

$drinkId = $spirit['id'];

请尝试使用FETCH_OBJ

在最简单的解释中,问题是您将数据库结果作为关联数组( PDO::FETCH_ASSOCPDO::FETCH_ASSOC 如果要使用对象运算符访问行数据,则需要将结果作为对象或特定类获取。

在不修改代码的情况下,要访问第一个返回行的ID,您可以:

$statement = $conn->prepare('SELECT * FROM spirits WHERE venueId = :venueId');
$statement->bindParam(':venueId' , $venueId, PDO::PARAM_INT);
$statement->execute();

$row = $statement->fetchAll(PDO::FETCH_ASSOC);
$spirit = $row[0];
$drinkId = $spirit['id'];

或者您可以获取stdClass的实例并使用对象运算符,如下所示:

$statement = $conn->prepare('SELECT * FROM spirits WHERE venueId = :venueId');
$statement->bindParam(':venueId' , $venueId, PDO::PARAM_INT);
$statement->execute();

$row = $statement->fetchAll(PDO::FETCH_OBJ);
$spirit = $row[0];
$drinkId = $spirit->id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM