【问题标题】:PHP prepared statement: Why is this throwing a fatal error?PHP 准备好的语句:为什么这会引发致命错误?
【发布时间】:2010-02-05 04:27:39
【问题描述】:

不知道这里出了什么问题。继续扔……

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

...每次到达$select = $dbcon->prepare('SELECT * FROM tester1');part。有人可以说明我做错了什么吗?

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];

【问题讨论】:

    标签: php mysql pdo prepared-statement


    【解决方案1】:

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

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

    【讨论】:

    • 如果您阅读错误,它们往往会准确地告诉您问题所在。
    • 嗯。阅读错误。没有道理。我把它放在原帖里
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      相关资源
      最近更新 更多