MySQL запрос синтаксической ошибки при использовании в PHP - PullRequest
1 голос
/ 19 марта 2012

код iPhone

Когда я использую этот код, он всегда показывает пароль ошибки, но я ввожу правильные учетные данные.

    NSString *post =[NSString stringWithFormat:@"UserName=%@&UserPas   sword=%@",userNameTextField.text, userPasswordTextFiled.text];

    NSString *hostStr = @"http://www.celeritas-solutions.com/emrapp/connect.php";
     = [hostStr stringByAppendingString:post];
    NSData *dataURL =  [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];    
    NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
    if([serverOutput isEqualToString:@"Yes"]){
           UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Congrats" message:@"You are authorized "
                                                          delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
       [alertsuccess show];
           [alertsuccess release];


    } else {
            UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Username or Password Incorrect"
                                                          delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alertsuccess show];
            [alertsuccess release];

    }

Я получаю подтверждение имени пользователя и пароляиз базы данных, но это дает ошибку синтаксиса sql, что

   You have an error in your SQL syntax; check the manual that corresponds to your   MySQLserver version for the right syntax to use near 'AND UserPassword=' at line 1

  mysql_select_db("emriphone", $con);


  $u=$_GET['UserName'];
  $pw=$_GET['UserPassword'];

   $check ="SELECT UserName,UserPassword from appUsers WHERE UserName=$u AND UserPassword=$pw";

  $login=mysql_query($check,$con) or die(mysql_error());

  if(mysql_num_rows($login)==1){

  $row =mysql_fetch_assoc($login);
  echo 'YES'; exit;
   }

 else{
   echo'NO';exit;
  }

 mysql_connect($con);

Ответы [ 6 ]

3 голосов
/ 19 марта 2012

Вам нужно поместить одинарные кавычки в запросе -

$check ="SELECT UserName, UserPassword 
         FROM   appUsers 
         WHERE UserName='$u'           
         AND UserPassword='$pw'";      // These are probably varchar data columns 
                                       // in your db. In that case, you should 
                                       // put single quotes like this.

Когда вы ищете текстовые поля в вашей базе данных, вы должны помещать одинарные кавычки вокруг них. В противном случае MySQL сообщит об этом как об ошибке.

2 голосов
/ 19 марта 2012

Предполагая, что имя пользователя и пароль являются текстовыми полями, вы должны исправить их следующим образом

$check ="SELECT UserName,UserPassword from appUsers WHERE UserName=$u AND UserPassword=$pw";

Для

$check ="SELECT UserName,UserPassword from appUsers WHERE UserName='$u' AND UserPassword='$pw'";

включена одинарная кавычка вокруг имени пользователя и пароля

2 голосов
/ 19 марта 2012

Может быть, вам нужно добавить одинарные кавычки вокруг параметров имени пользователя и пароля в предложении where, поскольку я предполагаю, что это строки.В MySQL вам нужно заключать строки в одинарные кавычки.

1 голос
/ 19 марта 2012
 $check ="SELECT UserName,UserPassword from appUsers WHERE UserName=$u AND UserPassword=$pw";

И поскольку вы используете mysql, обязательно очистите имя пользователя и пароль от SQL-инъекции, используя следующую команду:

$u = mysql_real_escape_string($_GET['UserName']);
$pw = mysql_real_escape_string($_GET['UserPassword']);

И последняя мысль; Используйте POST вместо GET для страницы входа; D hehe

1 голос
/ 19 марта 2012

Используйте одинарные кавычки для переменных в запросе ''

Надеюсь, это вам поможет.

0 голосов
/ 19 марта 2012

Защитите себя от инъекций sql, пока вы на нем

$query = sprintf("SELECT UserName,UserPassword from appUsers WHERE UserName='%s' AND UserPassword='%s'", mysql_real_escape_string($u),mysql_real_escape_string($pw));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...