“在非对象上调用成员函数bind_param()”的问题

时间:2014-06-14 16:34:54

标签: php sql

我是使用php的新手,我目前正在开发一个具有交互式动物词汇表的网站。

我一直在编辑由其他开发人员编写的php页面,当我运行bind_param()函数时遇到错误。

这是页面的内容,已经删除了很多优惠,所以我只暴露了我的错误。

if (isset($_GET['id'])) {

    $results = array();

    $stmt = $db_conn->prepare("SELECT specific.id, specific.name, specific.description, specific.group_id, m.id specific_media_id, m.type specific_media_type, m.url specific_media_url FROM ANIMAL_SPECIFIC specific LEFT JOIN MEDIA m on m.id = specific.media_id WHERE GROUP_ID = ?");
    $stmt->bind_param('i', $_GET['id']);
    $stmt->execute();
    $stmt->bind_result($specific_id, $name, $description, $group_id, $specific_media_id, $specific_media_type, $specific_media_url);
    while ($stmt->fetch()) {
        $specific = array(
            "id" => $specific_id,
            "name" => $name,
            "description" => $description,
            "group_id" => $group_id
        );

        if (!empty($specific_media_id)) {
            $media = array(
                "id" => $specific_media_id,
                "type" => $specific_media_type,
                "url" => $specific_media_url
            );
            $specific["media"] = $media;
        } 

        $results["results"]["animal_specific"][] = $specific;
    }
    $stmt->close();

    echo json_encode($results);
}

}

我得到的错误是:致命错误:在第13行的/web/animaldetailsJSON.php中的非对象上调用成员函数bind_param()调用堆栈:0.0058 647448 1. {main}()/ web / animaldetailsJSON.php:0

我确信我会忽略一些小错误。我只需要一个具有特定group_id的所有SPECIFIC_ANIMALS的JSON

1 个答案:

答案 0 :(得分:0)

specific似乎是MySQL中的一个保留字,所以你要么必须使用另一个表别名,要么用反引号将其引用,如

SELECT `specific`.id, `specific`.name, `specific`.description, `specific`.group_id, m.id specific_media_id, m.type specific_media_type, m.url specific_media_url FROM ANIMAL_specific `specific` LEFT JOIN MEDIA m on m.id = `specific`.media_id WHERE GROUP_ID = ?

因此,您的查询失败,$stmt变为null,从而触发发布的错误。