当结果不应该是数组时,PHP函数返回数组

时间:2019-11-22 20:38:49

标签: php mysql

我对PHP非常陌生。我有一个函数应该返回包含单列1或0的单条记录:

function is_pitcher($player_id)  {
  global $db;
  $query = 'SELECT IF (position = 1, 1, 0) AS is_pitcher FROM players WHERE player_id = :player_id';
  $statement = $db->prepare($query);
  $statement->bindValue(':player_id', $player_id);
  $statement->execute();
  $is_pitcher = $statement->fetchAll();
  $statement->closeCursor();
  return $is_pitcher;

在控制页上,我有一条IF语句,它对$is_pitcher的值1和0进行求值:

if ($action == 'get_player') {
  $player_id = filter_input(INPUT_GET, 'player_id');
  $is_pitcher = is_pitcher($player_id);
if ($is_pitcher == 1) {...

使用echo $is_pitcher测试该值表明它是一个数组,因此无法以这种方式求值。我已经尝试使用fetch()fetchAll()来获得相同结果的功能。

我可以使用$is_pitcher获得echo $is_pitcher['is_pitcher']的值,但是在控制页上这样做会破坏它。

有没有一种方法可以编写不返回数组的函数?还是有办法将变量作为数组求值?

ETA:为回应评论,这是数组的结构:

array ( 0 => array ( 'is_pitcher' => '0', 0 => '0', ), )

1 个答案:

答案 0 :(得分:1)

来自https://www.php.net/manual/en/pdostatement.fetchall.php

PDOStatement::fetchAll — Returns an array containing all of the result set rows 因此,是的,即使有一个结果,它也应该是一个数组。