2016-05-18 3 views
0

У меня возникли проблемы с изменением «стандартный» запрос MySQL в подготовленное заявление, чтобы предотвратить SQL-инъекции и т.д.Изменить Standand запрос MySQL к «подготовленный» MySQL запрос

Ниже приведен код, который дает мне ошибки,

2-ой SQL-запрос является один я пытаюсь получить работу,
(тот, который не закомментирован)

<?php 
include('../db_connect.inc'); 
$username = $_POST['username']; 
$password = $_POST['password']; 
$hashedPassword = md5($password); 






//$query = $conn->query("Select * from dog_parks.members where username = '$username' and password ='$hashedPassword' "); 
//$count = $query->rowcount(); 
//$row = $query->fetch(); 


$query = $conn->prepare("Select * from dog_parks.members where username = :username_login and password = :password_login "); 
$query->bindParam(':username_login', $username); 
$query->bindParam(':password_login', $hashedPassword); 
$count = $query->rowcount(); 
$row = $query->fetch(); 
$query->execute(); 







if ($count > 0){ 
session_start(); 
$_SESSION['id'] = $row['username']; 
header('location:home.php'); 
} else { 
?> 
<script> 
    alert("Incorrect Details. Check your User Name or Password.") 
    window.location="../index.php"; 
</script> 
<?php 
} 
?> 

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

Любые идеи о том, где я ошибаюсь?

+0

Думаю, все, что вам нужно сделать, это изменить 1 письмо. дайте мне знать, если мой ответ сработает. – Webeng

+0

На самом деле я нашел другую ошибку, попробуйте сейчас – Webeng

+0

попробуйте сейчас, окончательное редактирование было сделано lol – Webeng

ответ

1

Функция счетной строки с капиталом 'c': rowCount(). Также ваш код находится в неправильном порядке. используйте следующее:

$query = $conn->prepare("Select * from dog_parks.members where username = :username_login and password = :password_login "); 
$query->bindParam(':username_login', $username); 
$query->bindParam(':password_login', $hashedPassword); 
$query->execute(); 
$count = $query->rowCount(); 
$row = $query->fetch(); 

Сообщите мне, если это исправить проблему.

+0

Привет, Исправлена ​​проблема, спасибо. – deluxenathan

0
$query = $conn->prepare("Select * from dog_parks.members where username = :username_login and password = :password_login ", array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$query->execute(array(':username_login' => $username, ':password_login' => $hashedPassword)); 
+0

Привет Я использую PDO, что мне нужно, чтобы получить подготовленный оператор, работающий с синтаксисом PDO? – deluxenathan

+0

Обновлено, попробуйте ответить выше. – Ponilz

1

я делаю подготовки заявления, как следует (на основе своего кода):

$query = $conn->prepare("SELECT * FROM table WHERE username = :username"); 
$query->execute(array(':username' => $username)); 
$queryRow = $query->fetch(PDO::FETCH_ASSOC); 

Я считаю, что легче бросить его в массиве.

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