我是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'];
答案 0 :(得分:0)
$S->execute()
返回true或false,因此$temp_name
被设置为布尔值 - 这解释了为什么你不能调用$temp_name->fetch()
- 它不是一个对象。
您根本不需要$temp_name
,只需:
$S->execute();
$code_name = $S->fetch(PDO::FETCH_ASSOC);
答案 1 :(得分:-1)
$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;
}