2014-10-27 72 views
0

我有一些代碼,我在一個登錄表單的會話頁面使用會話,但它使用mysql_*功能:創建使用PDO

<?php 
$connection = mysql_connect("localhost", "root", "password"); 
$db = mysql_select_db("database", $connection); 

session_start();// Starting Session 
$user_check=$_SESSION['login_user']; 

$ses_sql=mysql_query("select * from login where email='$user_check'", $connection); 
$row = mysql_fetch_assoc($ses_sql); 
$login_session =$row['email']; 
$user_id =$row['id']; 
$user_passwords = $row['password']; 


if(!isset($login_session)){ 
mysql_close($connection); // Closing Connection 
header('Location: login_form.html'); // Redirecting To Home Page 
} 
?> 

我試圖將其更改爲PDO。到目前爲止,我已經做出這些修改,但我不知道他們是否正確:

<?php 
// Establishing Connection with Server by passing server_name, user_id and password as a parameter 
$dbhost  = "localhost"; 
$dbname  = "databse"; 
$dbuser  = "root"; 
$dbpass  = "password"; 

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 

session_start(); 
$user_check=$_SESSION['login_user']; 

$result = $conn->prepare("SELECT * FROM login WHERE email= :$user_check"); 
$row = $result->fetch(PDO::FETCH_ASSOC) 

$login_session =$row['email']; 
$user_id =$row['id']; 
$user_passwords = $row['password']; 

if(!isset($login_session)){ 
$conn = null; // Closing Connection 
header('Location: login_form.html'); // Redirecting To Home Page 
} 
?> 

誰能告訴我,如果我已經正確地做到了這一點?

+1

是否有任何理由爲什麼你不能只是測試腳本? – dayuloli 2014-10-27 15:00:21

回答

0

看起來不錯,除了:

$result = $conn->prepare("SELECT * FROM login WHERE email= :$user_check"); 
$row = $result->fetch(PDO::FETCH_ASSOC); 

當你做了準備(),你必須通過它的參數在​​(或使用bindValue()其他的證明,但這種方式是更清潔,IMO )

$result = $conn->prepare("SELECT * FROM login WHERE email= :usercheck"); 
$result->execute(array(":usercheck"=>$user_check)); 
$row = $result->fetch(PDO::FETCH_ASSOC); 

不要忘記分號;)

0

我建議你改變你的代碼,如下所示。您應該執行$result

$result = $conn->prepare("SELECT * FROM login WHERE email = :user_check"); 
$result->bindValue(':user_check', $user_check); 
$result->execute(); 
$row = $result->fetch(PDO::FETCH_ASSOC); 
0

不要忘記​​讀取前和佔位符不採取美元符號:

$result = $conn->prepare("SELECT * FROM login WHERE email= :user_check"); 
$result->execute(array(':user_check'=>$user_check)); 
$row = $result->fetch(PDO::FETCH_ASSOC);