2016-05-18 17 views
0

我有改變「標準」 MySQL查詢到一個事先準備好的聲明,以防止SQL注入等變化standand MySQL查詢「準備」 MySQL查詢

下面是它給我的錯誤代碼的問題,

第二屆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); 

我覺得更容易把它扔在數組中。