PHP准备好的声明:为什么这会抛出一个致命的错误?

时间:2010-02-05 04:27:40

标签: php mysql pdo prepared-statement

不知道这里出了什么问题。继续投掷...

  

致命错误:在非对象上调用成员函数prepare()

......每次到达$select = $dbcon->prepare('SELECT * FROM tester1');部分。有人能否解释我做错了什么?

function selectall()            //returns array $client[][]. first brace indicates the row. second indicates the field
  {
  global $dbcon;

  $select = $dbcon->prepare('SELECT * FROM tester1');
  if ($select->execute(array()))
    {
    $query = $select->fetchall();

    $i = 0;

    foreach ($query as $row)
      {
      $client[$i][0] = $row['id'];
      $client[$i][1] = $row['name'];
      $client[$i][2] = $row['age'];
      $i++;
      }
    }
  return $client;
  } 
$client = selectall();
echo $client[0][0];

2 个答案:

答案 0 :(得分:5)

显而易见的答案是$dbcon根本没有被初始化,或者在调用此函数后被初始化。

正在初始化$dbcon的代码是什么?它在何时何地运行?您还意识到需要在访问数据库的脚本的每次调用中初始化它?最后一个是确保您了解PHP中的global范围。它意味着作用于该单个请求。 global这个词有点误导。

答案 1 :(得分:0)

确保正确定义$dbcon。如果您使用的是mysqli,请查看doc中如何设置连接。您也可以将连接对象传递给函数

function selectall($dbcon){
   ....
}