PHP在尝试获取行的id时为null
我有奇怪的麻烦 我有这个结果PHP在尝试获取行的id时为null,php,Php,我有奇怪的麻烦 我有这个结果 {"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);
{"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" }
也许是因为你使用了,所以电话应该是
$drinkId = $spirit['id'];
尝试使用
FETCH_OBJ
取而代之在最简单的解释中,问题是您将数据库结果作为关联数组(PDO::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
的实例并使用object操作符,如下所示:
$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;
您是否尝试过基本调试,例如
var_dump($row[0])代码>?$spirit结果如上所述,$row或$spirit不为Null否其不为json编码。我稍后会对它进行编码。请检查var_转储的结果