Я супер новичок в PHP.Просто начал писать сценарии неделю назад.У меня проблема с функцией, которая не возвращает true, хотя данные кажутся правильными.Я провел день + в поисках ответов.
Вот сокращенный класс.
public function verifyPost()
{
try
{
if(!$this->verifyDatabase())
throw new Exception('Invalid Username Password');
$this->access = 1;
}
catch(Exception $e)
{
$this->errors[] = $e->getMessage();
}
}
public function verifySession()
{
if($this->sessionExist() && $this->verifyDatabase())
$this->access = 1;
}
public function verifyDatabase()
{
/* connect to db */
$mysqli = new mysqli ("localhost", "user", "password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* create prepare statement */
$stmt = $mysqli->prepare("SELECT ID FROM user WHERE id1 = ? AND id2 = ?");
$stmt->bind_param('ss', $this->id1, $this->id2);
/* execute prepared statement */
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($col1);
/* check user info in db and assign returned ID to variable*/
if(($stmt->fetch()) != 0) {
$this->userid = $col1;
return true;
} else {
return false;
}
/* close statement and connection */
$stmt->close();
/* close connection */
$mysqli->close();
}
(я не вставил реальную информацию о подключении к БД)
По какой-то причине $ access не устанавливается в verifySession () bc verifyDatabase () не делаетверните истину.VerifyDatabase () проходит через нормально.Он находит User / Pass в БД и не выдает исключение.Проблема возникает в заявлении IF.Я выделил его здесь, закомментировав весь оператор IF за исключением «return true;», и verifySession () устанавливает $ access в 1.
Теперь я подумал, что это может быть fetch (), поэтому явместо этого попробовал num_rows () и до сих пор не возвращает true.
Надеюсь, это имеет смысл.Дайте мне знать, если мне нужно уточнить больше.Любая помощь высоко ценится!!Спасибо!