在非对象上调用成员函数fetch()

时间:2014-06-08 00:58:26

标签: php pdo fetch

我是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'];

2 个答案:

答案 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;
}