为了执行您所要求的操作,首先创建一个用户列表:
$connect = mysqli_connect("localhost", "root", "", "mydb");
$query = "SELECT name, surname FROM info ORDER BY id";
$record = mysqli_query($query, $connect);
while($row = mysqli_fetch_assoc($record)){
$user = $row['name'] . ' ' . $row['surname'];
echo '<a href="user.php?uid=' . $row['id'] . '">' .$user . '</a></br>';
}
这将创建一个包含所有用户的列表,如下所示:
<a href="user.php?uid=1">Bart Simpson</a></br>
<a href="user.php?uid=2">Matt Damon</a></br>
等等。
当你点击原始页面中的用户链接时,应该由user.php中的代码进行处理:
$connect = mysqli_connect("localhost", "root", "", "mydb");
$query = "SELECT name, surname FROM info WHERE id = ?"; // returns one line identified by id - you can use something else if you're guarateed the value is unique in your table
$stmt = mysqli_prepare($connect, $query);
mysqli_stmt_bind_param($stmt, 'i', $_GET['uid']);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $name, $surname);
mysqli_stmt_fetch($stmt);
我敢打赌你能猜到现在会发生什么,不是吗?没错,您可以在此页面上回显单个用户的数据:
$user = $name . ' ' . $surname;
echo $user;
NOTES:
- 连接代码可以放置在单独的文件中,并在需要时包含在页面中。
- 您可以编写一个函数来处理您编写的每个查询。
- 为了防止 SQL 注入的可能性,我使用了prepared http://en.wikipedia.org/wiki/Prepared_statement的陈述MySQLi http://php.net/manual/en/mysqli.quickstart.prepared-statements.php. Even 转义字符串 http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string不安全!
- 一般来说,我的编码会更加一致,每次都以相同的方式执行查询。这样做将减少故障排除时间,并使您的代码更易于其他人阅读。