在get方法中调用成员函数bind_Param()

时间:2015-11-17 06:54:07

标签: php mysqli

我想知道我的代码中存在的问题是什么?我尝试了所有可以搜索的源代码,但它仍然给了我同样的错误,它仍然是“在非对象上调用成员函数bind_Param()”。这是我的代码。希望有人可以帮助我,谢谢

$app->get('/students/:student_id',function () use($app){
    $sql = "SELECT * FROM students WHERE student_id =:student_id";
    try {
        $db = connect_db();
        $stmt = $db->prepare($sql);  
        $stmt->bind_Param("student_id", $student_id);
        $stmt->execute();
        $students = $stmt->fetchObject();
        $db = null;
        echo json_encode($students); 
    }
    catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }
});

1 个答案:

答案 0 :(得分:0)

这个有效:

$app->get('/students/:student_id', function ($student_id) use($app){
    $sql = "SELECT * FROM students WHERE student_id = ?";
    try {
        $db = connect_db();
        $stmt = $db->prepare($sql);  
        $stmt->bind_Param("i", $student_id);
        $stmt->execute();
        $result = $stmt->get_result();
        $students = $result->fetch_object();
        $db = null;
        echo json_encode($students); 
    }
    catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }
});

我假设你正在使用connect_db函数的这个定义:

function connect_db() {
    $dbhost="localhost";
    $dbuser="user";
    $dbpass="pass";
    $dbname="stackoverflow-33750846";
    return new mysqli($dbhost, $dbuser, $dbpass, $dbname);;
}

使用数据库连接并从中读取数据时可能会有一些混乱,所以我添加了一些观点: