Что ж, согласно документации для 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;
}