2015-04-28 3 views
0

привет, я получаю эту ошибку, хотя я попытался изменить новую, чтобы я мог получить эту проблему, может кто-нибудь сказать мне, что мне делать. Я полностью изменил страницу и базу данных, но все равно такую ​​же ошибку.ошибка в синтаксисе SQL;

ошибка>

У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MariaDB для корректного синтаксиса использовать вблизи «» calendar_admin' WHERE teacher_id = „ipcst123“ и пароль = „a141c47927929bc2d1fb6“ в строке 1

мой код>

<?php 
$username=$_POST['teacherId']; 
$password=$_POST['password']; 
$password=md5($password); 
try { 
$bdd = new PDO('mysql:host=localhost;dbname=XXX', 'XXX', 'XXX'); 
} catch(Exception $e) { 
    exit('Unable to connect to database.'); 
} 


$query ="SELECT * FROM 'calendar_admin' WHERE teacher_id="."'".$username."' and password="."'".$password."' "; 
$resultat = $bdd->query($query) or die(print_r($bdd->errorInfo())); 
$res = $resultat->fetchAll(PDO::FETCH_ASSOC); 


foreach($res as $result){ 
$pass=md5($password); 
$user=$result["teacher_id"]; 

if ($pass==$result["password"]&& $username == $user){ 
echo "login Success"; 
session_start(); 
$_SESSION['teacher_id'] = $username; 
header('Location:/addEvents.php'); 
}else{ 

    header('Location:/login.php'); 
    //echo "Incorrect Password"; 
} 
} 
+0

'From«calendar_admin'' неправильные цитаты! – Rizier123

+1

Lordie lordie lordie. –

+0

Это не ваш фактический пароль жирным шрифтом, не так ли? –

ответ

1

Вы должны использовать обратные кавычки вместо одинарных кавычек:

$query ="SELECT * FROM `calendar_admin` WHERE teacher_id='".$username."' and `password`='".$password."' "; 

или просто удалить их

$query ="SELECT * FROM calendar_admin WHERE teacher_id='".$username."' and `password`='".$password."' "; 

И так как вы используете PDO, вы должны связать параметры, но не объединять их в запрос:

$query ="SELECT * FROM calendar_admin WHERE teacher_id= :teacher and `password`= :password "; 

$sth = $bdd->prepare($query); 
$sth->bindParam(':teacher',$username); 
$sth->bindParam(':password',$password); 
$sth->execute(); 
$res = $sth->fetchAll(PDO::FETCH_ASSOC); 
1

Вокруг имен столбцов и таблиц должно быть, а не обратные кавычки одинарные кавычки. O rnothing, если имена не из зарезервированных слов (или пробелов, или дефиса, или что-нибудь еще, что MySQL будет кричать о, @fred -ii- в комментариях ниже):

`calendar_admin` 

Полный запрос:

$query ="SELECT * 
     FROM `calendar_admin` 
     WHERE teacher_id = '" . $username . "' AND      
       password = '" . $password . "'"; 

Не забудьте избежать данных с пользовательских входов.

+3

* «Или ничего, если имена не из зарезервированных слов: * - или пробелы, или дефисы, или что-нибудь еще, что MySQL будет кричать о ;-) –

+0

@ Fred-ii-: вы правы, я поместил туда вариант, который использует. Я никогда не видел имени столбца с пробелом, разрешено ли это? – panther

+0

Существует намного больше, чтобы * улучшить * в коде OP! – Rizier123

0
$query = " 
SELECT * 
    FROM calendar_admin 
WHERE teacher_id = '$username' 
    AND password = '$password'; 
"; 

Далее, посмотрите на подготовленные заявления

+0

спасибо всем ... я получил свою ошибку. Какой глупый был ...: P – Prdpk

Смежные вопросы