Подготовленное PHP заявление: почему это приводит к фатальной ошибке? - PullRequest
0 голосов
/ 05 февраля 2010

Понятия не имею, что здесь происходит не так. Продолжает бросать ...

Неустранимая ошибка: вызов функции-члена 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 ]

5 голосов
/ 05 февраля 2010

Очевидный ответ заключается в том, что $dbcon не был инициализирован вообще или инициализируется после вызова этой функции.

Какой код инициализирует $dbcon? Где и когда он запускается? Вы также понимаете, что вам нужно будет инициализировать его при при каждом вызове сценария, который обращается к базе данных? Последнее - просто убедиться, что вы понимаете, что такое global область действия в PHP. Это означает, что ограничен этим единственным запросом. Термин global немного вводит в заблуждение.

0 голосов
/ 05 февраля 2010

убедитесь, что вы правильно определили $dbcon. Если вы используете mysqli, посмотрите, как устанавливается соединение в doc . Вы также можете передать объект подключения в функцию

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