2017-08-04 197 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。