我是php新手,看过许多与此错误相关的帖子,但仍然找不到问题。我也尝试了try catch块,没有得到异常。没有连接问题,也在我的数据库中测试了查询。
$host="mysql:host=".$host_name.";dbname=".$dbname;
$ques_code=1;
$dbh = new PDO($host, $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$S=$dbh->prepare("SELECT q_code FROM question_code_submission WHERE q_num = :id");
$S->bindParam(':id', $ques_code);
$temp_name=$S->execute();
$code_name=$temp_name->fetch(PDO::FETCH_ASSOC);
$code_name=$code_name['q_code'];
$S->execute()
返回true或false,因此$temp_name
被设置为布尔值-这解释了为什么不能调用$temp_name->fetch()
-它不是对象。
您根本不需要$temp_name
,只需:
$S->execute();
$code_name = $S->fetch(PDO::FETCH_ASSOC);
$host="mysql:host=".$host_name.";dbname=".$dbname;
$ques_code=1;
$dbh = new PDO($host, $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$S=$dbh->prepare("SELECT q_code FROM question_code_submission WHERE q_num = :id");
$S->bindParam(':id', $ques_code);
$success = $S->execute();
if(!$success){
echo "Query failed !!";
}else{
$result=$S->fetch(PDO::FETCH_ASSOC);
$code_name = $result['q_code'];
echo $code_name;
}