【问题标题】:Function returning Object rather than Array函数返回对象而不是数组
【发布时间】:2016-01-26 12:01:24
【问题描述】:

我在一个函数中创建了一个 DB 查询,它的视图返回一个数组,我以后可以在多个实例中使用该数组。

但是,当我调用该函数时,它返回的是一个对象(“事件对象([数据库] => mysqli 对象”),而不是我计划的数组。

我知道查询的工作方式就像函数本身中的 'print_r($events)' 而不是 'return $events' 我可以按预期看到所有结果信息。

public function get_events()
    {

        $stmt = $this->Database->prepare("SELECT 'id', `title`, `event_desc`, `date`, `time`, `location`, `spots`, `event_city`, `event_spots_available`, `event_series` FROM `events` ORDER BY `date` ASC");
        $stmt->execute();      

        $events = array();  

        /* bind variables to prepared statement */
        $stmt->bind_result($col1, $col2, $col3, $col4, $col5, $col6, $col7, $col8, $col9, $col10);


        /* fetch values */
        while ($stmt->fetch()) 
        {
            $events[] = array(
                'event_id'              => $col1,
                'event_title'           => $col2,
                'event_desc'            => $col3,
                'event_date'            => $col4,
                'event_time'            => $col5,
                'event_location'        => $col6,
                'event_spots'           => $col7,
                'event_city'            => $col8,
                'event_spots_available' => $col9,
                'event_series'          => $col10 
            );

        }
        $stmt->close();
        return $events;
    }

}

请指教我的错误?

【问题讨论】:

  • 如果你有一个数据库查询,结果总是一个对象。如果要使用此对象,可以将结果作为数组或每一行作为一个数组单独获取。 php.net/manual/de/mysqli-result.fetch-array.php 这应该会有所帮助。如果你愿意,我可以给你一个“查询结果”的例子,以及如何将它转换成一个数组(整个工作例子)让我知道这是否是你需要的。
  • id 周围的引号不正确,应该是SELECT `id`, `title`, ...
  • 请检查此 print_r($events) 可分配的事件中的内容;

标签: php arrays database mysqli


【解决方案1】:

如果您使用准备好的语句并希望将结果作为数组,我会推荐这样的东西:

$query= "SELECT * FROM events;";
if($stmt = mysqli_prepare($connection, $query))
{
    mysqli_stmt_bind_param($stmt, "s", $param);
    mysqli_stmt_execute($stmt);
    $resultObject = mysqli_stmt_get_result($stmt);
    mysqli_stmt_close($stmt);
}

$myArray = array();
$size = mysqli_num_rows($resultObject);
for($i = 0; $i < $size; $i++)
{
    $myArray[$i] = mysqli_fetch_array($resultObject, MYSQLI_ASSOC);
}

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 2018-07-05
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多