Intereting Posts

SQLi и возврат определенной записи

огляделся, увидел много ответов MySQL, но не MySQLi. Я пытаюсь вернуть 1 строку по своему выбору. на данный момент я могу вернуть только первую строку.

К чему я пытаюсь добраться, привяжите мою основную базу данных по ID, когда вы нажимаете ID, более пристальный взгляд на запись находится на другой странице.

<?php $connect = mysqli_connect("localhost", "root", "", "mydb"); $query = "SELECT name, surname FROM info ORDER BY id"; $record = mysqli_query($connect, $query); @$num_results = mysqli_num_rows($record); $row = mysqli_fetch_assoc($record); $fname = $row['name']; $surname = $row['surname']; print $fname; print $surname; ?> 

Чтобы сделать то, что вы просите, сначала создайте список пользователей:

 $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 Injection я использовал подготовленные инструкции для MySQLi . Даже экранирование строки небезопасно!
  4. В общем, я был бы намного более совместим с моей кодировкой, выполняя запросы одинаково каждый раз. это позволит сократить время устранения неполадок, а также упростить чтение кода другим пользователям.