我想知道我的代码中存在的问题是什么?我尝试了所有可以搜索的源代码,但它仍然给了我同样的错误,它仍然是“在非对象上调用成员函数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() .'}}';
}
});
答案 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);;
}
使用数据库连接并从中读取数据时可能会有一些混乱,所以我添加了一些观点:
$student_id
作为参数传递给可调用函数; $stmt->bind_Param
接受表示参数类型和所有绑定参数的字符串; fetchObject
是mysqli_result类的函数。