Прежде всего позвольте мне сказать, что я в первую очередь разработчик iOS, который только недавно изучает захватывающие приключения полной разработки стека. Я новичок в PHP и MySQL. Сказав, что у меня есть проблема, которая, я надеюсь, требует прямого решения.
Я создаю новый api для клиента, у которого есть существующая база данных, где они хотят использовать адрес электронной почты и пароль для аутентификации пользователей.
Мой код:
Клиент: Я начинаю проводкой адрес электронной почты и пароль из формы в PHP скрипт. Я проверял, что сообщение происходит, как ожидалось, т. Е. Я получаю адрес электронной почты и пароль, введенные пользователем. (по моему вопросу, релевантно только электронная почта.) Я не хочу обсуждать «шифровать ваши пароли». Это не мой вопрос.
Сервер: (для чего это стоит, это использует структуру CodeIgniter)
public function authenticateUser()
{
$user = $_POST['user'];
$password = $_POST['password'];
$this->load->model('user_model');
// for testing purposes, I'm just trying to echo the email address.
echo $this->user_model->authenticateUser('user', $user, $password);
}
Функция authenticateUser из user_model:
public function authenticateUser($table, $email, $password)
{
$sql = "SELECT email FROM " . $table . " WHERE email = " . "$email";
$query = $this->db->query($sql);
$row = $query->row(); // this is the line referenced in the error.
return $row->email;
}
Для ясности я называю параметр $ пользователю до он передается authenticateUser, а затем я называю его $ email. Очевидно, это не имеет значения.
Здесь ошибка, которая генерируется:
Fatal error: Call to a member function row() on a non-object in /path/to/core/MY_Model.php on line 76
76 || $row = $query->row();
электронной почты хранится в электронной базе данных столбца в таблице пользователей, как VARCHAR (100).
Если я запрашиваю другие критерии, такие как userId, я могу получить доступ к адресу электронной почты только отлично, но я не могу использовать адрес электронной почты в качестве критериев поиска для моего запроса. (извините, если я не могу использовать надлежащую номенклатуру.)
Есть ли что-то дополнительное, что связано с адресом электронной почты, чтобы использовать его как способ аутентификации пользователя? Неужели я все это делаю неправильно? Любая помощь будет принята с благодарностью.
Заранее благодарим за то, что нашли время, чтобы рассмотреть мою проблему.
Update
Я не могу решить свой вопрос до 8 часов после того, как не просил, но я хотел бы обновить свой вопрос сейчас, чтобы сообщество знает, что она решена. Это устранило мою проблему:
$sql = "SELECT email FROM " . $table . " WHERE email = '".$email."'";
Благодарим вас так много за быстрые, сердечные ответы!:)
заявление
, где должно быть условие WHERE email = '". $ Email."'; –
@Rikesh. Нет. Мы можем использовать строку напрямую. Проверка Pls http://ellislab.com/codeigniter/user-guide/database/ results.html –