Ошибки на сервере! Нужен еще один взгляд на простой PHP MySQL - PullRequest
0 голосов
/ 28 октября 2009

У меня есть следующий php-код, выбирающий данные пользователя из базы данных mysql

$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database');
$stmt = $mysql->prepare('SELECT personalinfo.userid, personalinfo.firstname, personalinfo.lastname FROM personalinfo INNER JOIN applications ON personalinfo.userid = applications.userid WHERE applications.jobref = ?');
$stmt->bind_param('i',$jr);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($userID,$firstName,$lastName);
$count = $stmt->num_rows();

Я протестировал этот код локально, он работает нормально, однако, когда я пытаюсь протестировать на живом сервере, я получаю следующую ошибку «Неустранимая ошибка: вызов функции-члена bind_param () для необъекта в C: \ path \ to \ directory»

Спасибо заранее,

Aaron

Любой

1 Ответ

3 голосов
/ 28 октября 2009

Что ж, согласно документации для mysqli :: prepare () , он вернет FALSE, если произошла ошибка, поэтому вы получаете ошибку «необъектного» пытается вызвать $stmt->bind_param(), поскольку $stmt не является объектом на данный момент.

Так что, как для вашей текущей ошибки, так и для любых будущих ошибок, обязательно проверяйте ошибочность при создании оператора и действуйте соответственно.

$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database');
$stmt = $mysql->prepare('SELECT personalinfo.userid, personalinfo.firstname, personalinfo.lastname FROM personalinfo INNER JOIN applications ON personalinfo.userid = applications.userid WHERE applications.jobref = ?');

if ( $stmt )
{
  $stmt->bind_param('i',$jr);
  $stmt->execute();
  $stmt->store_result();
  $stmt->bind_result($userID,$firstName,$lastName);
  $count = $stmt->num_rows();
} else {
  // something went wrong
  // perhaps display the error?
  echo $mysql->error;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...