У меня есть 2 метода обратного вызова, которые я использую для проверки ввода пользователя, который проверяет, существует ли почта в БД и другое, чтобы проверить, существует ли пользователь. Моя электронная почта работает отлично, однако имя пользователя NEVER выполняется правильно (так как оно никогда не возвращает пользователя).PHP обратный вызов MySQL никогда не возвращает значение
Код имени пользователя обратного вызова
// username check in DB
private function username($username, $fieldname){
$username = mysql_real_escape_string ($username);
if(strlen ($username) > 3 && strlen ($username) <= 25){
$sql = "SELECT username FROM pre_reg WHERE username =:username UNION SELECT username FROM personal WHERE username =:username";
try{
$query = $this->pdo->prepare($sql);
$query->bindParam(':username', $username, PDO::PARAM_STR);
$query->execute();
$user = $query->fetch();
if($user){
$this->errors[] = 'Please try a different username!';
return FALSE;
}else{
$this->username = $username;
return TRUE;
}
}catch (PDOException $e){
$e->getMessage(); // Store to file
}
}
return FALSE;
}
же код, который проверяет электронную почту, которая работает отлично
//email check
private function email($email, $fieldname){
$valid = filter_var($email, FILTER_VALIDATE_EMAIL);
if(!$valid){
$this->errors[] = "We find your entery to be an invalid email address!";
}
if($valid && strlen($email) <= 40){
$email = mysql_real_escape_string ($email);
$sql = "SELECT email FROM pre_reg WHERE email =:email UNION SELECT email FROM personal WHERE email=:email";
try{
$query = $this->pdo->prepare($sql);
$query->bindParam(':email', $email, PDO::PARAM_STR);
$query->execute();
$user = $query->fetch();
if($user){
$this->errors[] = 'Please try a different email address!';
return FALSE;
}
}catch (PDOException $e){
echo $e->getMessage(); // Store to file
}
}
$this->email = $email;
return TRUE;
}
Это, как я называю их
// Validate all the data
public function validate($data, $rules){
$valid = TRUE;
foreach($rules as $fieldname => $rule){
$callbacks = explode('|', $rule);
foreach($callbacks as $callback){
$value = isset($data[$fieldname]) ? $data[$fieldname] : NULL;
if($this->$callback($value, $fieldname) == FALSE){
$valid = false;
}
}
}
Почему вы используете функции mysql в PDO? – Neat
Я решил это, как только я понял, как печатать ошибки, чтобы увидеть, что происходит. Я ссылался на неправильную таблицу в своем SQL-заявлении, и она рушилась, но я не мог ее увидеть – theStudent