首页 > 解决方案 > stdClass 对象在现场有奇怪的怪癖,但在本地机器上没有

问题描述

我创建了一组辅助函数,让我在 php 中进行数据库操作时更轻松。本质上,我向函数传递了一个 stdClass 对象,然后它们使用它来执行操作(删除、添加等)或检索信息。除了用于删除数据库条目的辅助函数外,它们似乎按预期工作。令我沮丧的是,它在我运行 WAMP 的本地计算机上运行良好,但是当我将其上线时,它拒绝删除数据库条目。

我想我已经将问题缩小到一个奇怪的怪癖,我无法在 WAMP 和我的实时站点之间的 stdClass 对象的输出之间解释。

PHP:

<?php   
        session_start();
        require_once('dbconnect.php');
        require_once('dbhelpers.php');

        $cat = $_GET['cat'];
        $id = $_GET['id'];

        //remove row from table
        $a_remove = (object) array(
            "table" => "{$cat}",
            "columns" => (object) array(
                "`id`"
            ),
            "results" => (object) array(
                    "{$id}"
            ),
            "type" => (object) array(
                "i"
            )
        );
        removeRow($a_remove);
    ?>

这是我在 $a_remove 对象上运行 print_r 时 WAMP 响应的输出:

stdClass Object
(
    [table] => subjects
    [columns] => stdClass Object
        (
            [0] => `id`
        )

    [results] => stdClass Object
        (
            [0] => 36
        )

    [type] => stdClass Object
        (
            [0] => i
        )
)

但是,当我在我的实时站点上对 $a_remove 执行 print_r 时,我得到以下信息:

stdClass Object
(
[table] => subjects
[columns] => stdClass Object
    (
        [0] => `id`
    )

[results] => stdClass Object
    (
        [0] => 36
        [0] =>
    )

[type] => stdClass Object
    (
        [0] => i
    )
)

“结果”的响应中有一个奇怪的附加索引。关于可能导致这种情况的任何想法?

标签: phpobjectcoercion

解决方案


推荐阅读