2017-08-04 24 views
1

我有一個問題,我想索姆輸入。我列出了一個列出所有用戶的列表,我正在進行一個小項目。在這個列表中,我有一個鏈接到每個現有的用戶,以便用戶可以互相訪問。如何正確連接到另一個用戶在PHP

鏈接看起來像這樣。

<td> 
     <a href="otheruser.php?id=' .$row['id'].'"> 
     <i class="glyphicon glyphicon-user" aria-hidden="true">Presentation</i> 
     </a> 
    </td> 

這個鏈接作品有點。另一方面,問題開始。 當我到達我想要訪問的用戶個人資料頁面時,我使用此代碼從數據庫中查找用戶信息。

<?php 
$userId = $_GET['id']; 
$sql = "SELECT * FROM students WHERE id = " . intval($userId); 

$stmt = $dbh->prepare($sql); 

$stmt->execute(); 
?> 

這也有效,但我已經瞭解到,這是不好的形式。因此 我試着用

//$sql = "SELECT * FROM students WHERE id = id"; 

然後將顯示所有用戶和彼此頂部所有他們的介紹和圖片 ,在同一頁上。那麼,我又如何正確顯示另一位用戶 的演示文稿。 另外我使用PDO而不是MySQLI,如果這可以提供幫助。

+2

閱讀手冊中的[Prepared Statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。在這種特殊情況下,您的代碼是安全的,但是,因爲您將該值作爲整數轉換。但是,是的,最好是使用Prepared Statements並一直使用它。 –

+0

你得到身份證在另一個頁面檢查它 – Bhargav

+0

@Bhargav如果我不問我不學習。你能像我11歲那樣向我解釋嗎? :P – Robert

回答

0

你是密切與

$sql = "SELECT * FROM students WHERE id = id"; 

使用帶有PDO一個準備好的查詢,您可以通過以下兩種方式,位置或命名佔位符一個改變這一點。

陣地:

$sql = "SELECT * FROM students WHERE id = ?"; 

命名:

$sql = "SELECT * FROM students WHERE id = :id"; 

運行 「準備」,然後在執行語句添加值:

$stmt->execute([$userId]); // for positional 
$stmt->execute(['id' => $userId]); // for named 

(The only proper) PDO tutorial一直有很大的幫助讓我加快PDO。

相關問題