SQLi和retreiving特定记录

时间:2017-07-13 19:29:00

标签: php mysqli

环顾四周,看到了很多MySQL的答案,但没有MySQLi .. 我试图返回我选择的1行。 目前我只能回到第一行。

我想要的是,让我的主数据库通过ID链接,当你点击ID时,仔细查看记录是在另一页上。

gradle.properties

1 个答案:

答案 0 :(得分:2)

为了做你要求的事情,首先要创建一个用户列表:

$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;

注意:

  1. 连接代码可以放在一个单独的文件中,并包含在需要的页面中。
  2. 您可以编写一个函数来处理您编写的每个查询。
  3. 为了防止SQL注入的可能性,我使用了preparedMySQLi语句。即使escaping the string也不安全!
  4. 通常我会与我的编码更加一致,每次都以相同的方式执行查询。这样做可以减少故障排除时间,并使您的代码更容易让其他人阅读。