2014-01-29 71 views
0

我試圖從2008年更改一些php/mysql代碼,以便它使用當前的標準。我對PHP/MySQL相當陌生,所以儘管做了大量的研究,但我仍在掙扎。使用準備好的語句獲取ID

$sql_email_check = $db->prepare("SELECT `id` FROM `users` WHERE `email` = ? LIMIT 1"); 
$sql_email_check->bind_param('i', $email); 
$sql_email_check->execute(); 

echo "<pre>". print_r($sql_email_check, true)."<-- sql email check</pre>"; 

我試圖搶ID,這樣我可以在以後使用它,在我的代碼。

我的問題是(我很困惑,也許我問的是錯誤的問題),我該如何顯示/獲取ID? 我是新來的,所以如果我正在做一些事情,代碼明智,這是不符合標準,請讓我知道。

+0

http://php.net/manual/en/pdo.lastinsertid.php和/或http://php.net/manual/en/mysqli.insert-id .php –

+1

如果你的查詢很好,並且你的'email'列中有數據,可以嘗試添加'while($ row = $ sql_email_check-> fetch_assoc()){$ row ['email']; }''在'$ sql_email_check-> execute()之後''(這將用於你的'display'問題) - 你需要遍歷以顯示/回顯你的記錄。 –

+1

'$ sql_email_check-> bind_param('i',$ email);'$ email'確實是一個int嗎?或者應該實際上是'$ sql_email_check-> bind_param('s',$ email);'? –

回答

0

試試這個:

$sql_email_check = $db->prepare("SELECT `id` FROM `users` WHERE `email` = ? LIMIT 1"); 
$sql_email_check->bind_param('i', $email); 
$sql_email_check->execute(); 
$sec = sql_email_check->get_result(); 
$row = $sec->fetch_assoc(); 

$id = $row['id'];  

echo $id;