簡體   English   中英

PHP准備好的聲明:為什么這會引發致命錯誤?

[英]PHP prepared statement: Why is this throwing a fatal error?

不知道這里出了什么問題。 不斷拋出...

致命錯誤:在非對象上調用成員函數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];

顯而易見的答案是, $dbcon根本沒有初始化,或者在調用此函數后已初始化。

什么代碼正在初始化$dbcon 它在何時何地運行? 您還意識到, 每次訪問數據庫的腳本調用時都需要初始化它嗎? 最后只是確保您了解PHP的global作用域。 這意味着范圍僅限於該單個請求。 global一詞有點誤導。

確保正確定義$dbcon 如果您使用的是mysqli,請參閱doc中如何建立連接。 您還可以將連接對象傳遞給函數

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM