У меня проблема с запросом. Я запрос из одной таблицы, используя следующий процесс (с помощью PHP PDO и MySQL):Ошибка соединения с запросом MySQL
Построить строку запроса $ SQL:
SELECT *
FROM `user`
WHERE (`username`=:username OR `email`=:username)
AND `password`=:password AND `valid`='1';
И с помощью этого массива $ Params:
Params
(
[:password] => 18155dbf12503d726883784d1d9755f8d3382ba7
[:username] => [email protected]
)
вызовов эта функция:
$results_array = $database->QueryForObject($sql, $params);
public function QueryForObject($query, $binds)
{
$stmt = $this->db->prepare($query);
foreach($binds as $bindKey => &$key)
{
$stmt->bindParam($bindKey, $key, PDO::PARAM_STR);
}
return $this->RunObjectQuery($stmt, NULL , "stdClass");
}
Моя проблема заключается в том, что имя пользователя может быть НЕВЫП lete или даже отсутствует, и все, что он использует, чтобы найти пользователя - это пароль ... Я уверен, что он не должен этого делать, но я не могу понять, почему.
Как примечание стороны, здесь есть описание моей таблицы:
Field , Type , Null ,Key ,Default , Extra
id , int(10) unsigned , NO ,PRI ,NULL auto_increment
username , varchar(30) , NO ,UNI ,NULL
email , varchar(50) , NO , ,NULL
password , varchar(100) , NO , ,NULL
first_name , varchar(30) , NO , ,NULL
last_name , varchar(30) , NO , ,NULL
rights , enum('normal','medium','high','admin','super') , NO , ,NULL
last_loggedin , timestamp , YES , ,NULL
status , enum('current','expired','temporary') , NO , ,NULL
valid , tinyint(1) , NO , ,NULL
other_comments , varchar(500) , YES , ,NULL
gender , enum('male','female') , YES , ,NULL
company_position , varchar(50) , YES , , NULL
Любые предложения приветствуются !!
У вас есть строки с пустым адресом электронной почты? – jcsanyi
Ваш адрес электронной почты не будет отправлен, так что будут возвращены любые пустые записи адресов электронной почты. – DevZer0
«Имя пользователя» может быть либо фактическим именем пользователя, либо электронной почтой, поэтому избыточное: имя пользователя было специально. Он представляет собой то, что пользователь использует для заполнения поля ввода имени пользователя. – Jonathan