@klerok96

Не работает условие PDO mysql в ajax?

Не работает условие if (data == "wer" ) что не так делаю? как я понял проблема в php файле и проблема с PDO. Так как все стер и оставлял там только echo "wer" все работало. А когда запускаю с PDO пишет "ожидание" выводит мне с помощью alert(data); "wer" и все, ожидание так и висит, условие не хочет выполняться

function funcBeore () {
				$('#information').text ('Ожидаенние');
			}
			
		
			$(document).ready (function(){
				$("#load").bind("click", function () 
				{
					$.ajax(
					{
						url: "check_login.php",
						type: "POST",
						data: ({name: "Admin"}),
						dataType: 'html',
						beforeSend: funcBeore,  
						success: function (data){
							alert(data);
							if(data == "wer")
								$('#information').text (data);
						}
					});
				});
			});

include_once  "config.php";
	include_once  "db.php";
			
	$login = $_POST['login'];
	$password = $_POST['password'];
	
	$user = $pdo -> query("SELECT * FROM users WHERE login = '$login' ");
	$user_data = $user -> fetch(PDO::FETCH_ASSOC);
	
	$pdo = null;
	$user = null;
			
	if($user_data['password'] == $password)
	{
		echo "wer";
	}
	else
	{
		echo "newer";
	}
  • Вопрос задан
  • 361 просмотр
Решения вопроса 1
Зачем вы дергаете данные из базы, когда вам достаточно просто посчитать сколько строк удовлетворяет условию?
$query = $pdo->prepare('SELECT COUNT(*) FROM users WHERE login = :login AND password = :password');
$query->execute(array(':login'=>$login, ':password' =>$password));
if($query->fetchColumn() == 1){
   echo "wer";
  }
  else
  {
    echo "newer";
}

А теперь перейдем к сути вот что в итоге получилось:
<!--Я сделал небольшую форму, для тестирования. 
Вы ведь делаете авторизацию, значит данные будут вводится в форму -->
<form class="aut-form" method="post">
        <input name="login" type="text" placeholder="логин">
        <input name="password" type="password" placeholder="пароль">
</form>
<div id="information"></div>
<input id="load" type="submit" placeholder="отправить">

function funcBeore () {
        $('#information').text ('Ожидаенние');
      }
      $(document).ready (function(){
        $("#load").bind("click", function(){
          var dataAjax = $('.aut-form').serialize(); // пример заточен под использование формы
          $.ajax({
            url: "check_login.php",
            type: "POST",
            data: "data=''&" + dataAjax,
            dataType: 'html',
            beforeSend: funcBeore,  
            success: function (data){
              alert(data);
              if(data == "wer"){
                $('#information').text(data);
              }
            }
          });
        });
      });

И конечно же сервер.
if(isset($_POST['data'])){
  $login = $_POST['login'];
  $password = $_POST['password'];
  $query = $pdo->prepare('SELECT COUNT(*) FROM users WHERE login = :login AND password = :password');
  $query->execute(array(':login'=>$login, ':password' =>$password));
if($query->fetchColumn() == 1){
    echo "wer";
  }else{
    echo "newer";
  }
}


Код протестирован и прекрасно работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы