Обработка результата запроса
Для обработки результата запроса при процедурном стиле используются сле-
дующие функции:
? mysqli_num_rows(<Идентификатор результата>) возвращает количество записей в результате:
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) { echo mysqli_num_rows($res) . "<br>"; mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo "Не удалось установить подключение к базе данных";
}
? mysqli_field_count(<Идентификатор соединения>) возвращает количе-
ство полей в результате последнего SQL-запроса:
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) { echo mysqli_field_count($db) . "<br>"; mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo "Не удалось установить подключение к базе данных";
}
? mysqli_fetch_array(<Идентификатор результата>, [<Флаг>]) возвра- щает результат в виде списка и (или) ассоциативного массива в зависи- мости от значения необязательного параметра <Флаг>. Параметр может принимать следующие значения:
• MYSQLI_BOTH — результат в виде списка и ассоциативного массива
(значение по умолчанию);
• MYSQLI_NUM — результат в виде списка;
• MYSQLI_ASSOC — результат в виде ассоциативного массива.
Приведем пример, в котором используются все эти варианты:
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
while ($pole = mysqli_fetch_array($res)) {
echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;
}
mysqli_free_result($res);
}
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
$pole = mysqli_fetch_array($res, MYSQLI_BOTH);
echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;
$pole = mysqli_fetch_array($res, MYSQLI_NUM);
echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;
$pole = mysqli_fetch_array($res, MYSQLI_ASSOC);
echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;
mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo "Не удалось установить подключение к базе данных";
}
? mysqli_fetch_row(<Идентификатор результата>) возвращает результат в виде списка:
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
while ($pole = mysqli_fetch_row($res)) {
echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;
}
mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo "Не удалось установить подключение к базе данных";
}
? mysqli_fetch_assoc(<Идентификатор результата>) возвращает резуль-
тат в виде ассоциативного массива:
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
while ($pole = mysqli_fetch_assoc($res)) {
echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;
}
mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo "Не удалось установить подключение к базе данных";
}
? mysqli_fetch_object(<Идентификатор результата>) возвращает результат в виде объекта:
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
while ($pole = mysqli_fetch_object($res)) {
echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;
}
mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo "Не удалось установить подключение к базе данных";
}
? mysqli_data_seek(<Идентификатор результата>, <Смещение>) перемещает указатель результата на выбранную строку. Нумерация начинается с нуля:
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
mysqli_data_seek($res, 1);
$pole = mysqli_fetch_object($res);
echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;
mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo "Не удалось установить подключение к базе данных";
}
Для обработки результата запроса при объектном стиле используются сле-
дующие методы и свойства:
? num_rows возвращает количество записей в результате:
$host = "localhost";
@$db = new mysqli($host, "root", "123456", "tests");
if (!mysqli_connect_errno()) {
$db->query("SET NAMES cp1251");
if ($res = $db->query(‘SELECT * FROM `City`’)) {
echo $res->num_rows . ‘<br>’;
$res->close();
}
$db->close();
}
else {
echo "Не удалось установить подключение к базе данных";
}
? field_count возвращает количество полей в результате:
$host = "localhost";
@$db = new mysqli($host, "root", "123456", "tests");
if (!mysqli_connect_errno()) {
$db->query("SET NAMES cp1251");
if ($res = $db->query(‘SELECT * FROM `City`’)) {
echo $res->field_count . ‘<br>’;
$res->close();
}
$db->close();
}
else {
echo "Не удалось установить подключение к базе данных";
}
? fetch_array([<Флаг>]) возвращает результат в виде списка и (или) ассо- циативного массива в зависимости от значения необязательного парамет- ра <Флаг>. Параметр может принимать следующие значения:
• MYSQLI_BOTH — результат в виде списка и ассоциативного массива
(значение по умолчанию);
• MYSQLI_NUM — результат в виде списка;
• MYSQLI_ASSOC — результат в виде ассоциативного массива.
В следующем примере используются все эти варианты:
$host = "localhost";
@$db = new mysqli($host, "root", "123456", "tests");
if (!mysqli_connect_errno()) {
$db->query("SET NAMES cp1251");
if ($res = $db->query(‘SELECT * FROM `City`’)) {
while ($pole = $res->fetch_array()) {
echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;
}
$res->close();
}
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
$pole = $res->fetch_array(MYSQLI_BOTH);
echo $pole[0] . ‘ – ‘ . $pole['City'] . ‘<br>’;
$pole = $res->fetch_array(MYSQLI_NUM);
echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;
$pole = $res->fetch_array(MYSQLI_ASSOC);
echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;
$res->close();
}
$db->close();
}
else {
echo "Не удалось установить подключение к базе данных";
}
? fetch_row() возвращает результат в виде списка:
$host = "localhost";
@$db = new mysqli($host, "root", "123456", "tests");
if (!mysqli_connect_errno()) {
$db->query("SET NAMES cp1251");
if ($res = $db->query(‘SELECT * FROM `City`’)) {
while ($pole = $res->fetch_row()) {
echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;
}
$res->close();
}
$db->close();
}
else {
echo "Не удалось установить подключение к базе данных";
}
? fetch_assoc() возвращает результат в виде ассоциативного массива:
$host = "localhost";
@$db = new mysqli($host, "root", "123456", "tests");
if (!mysqli_connect_errno()) {
$db->query("SET NAMES cp1251");
if ($res = $db->query(‘SELECT * FROM `City`’)) {
while ($pole = $res->fetch_assoc()) {
echo $pole['id_City'] . ‘ – ‘ . $pole['City'] . ‘<br>’;
}
$res->close();
}
$db->close();
}
else {
echo "Не удалось установить подключение к базе данных";
}
? fetch_object() возвращает результат в виде объекта:
$host = "localhost";
@$db = new mysqli($host, "root", "123456", "tests");
if (!mysqli_connect_errno()) {
$db->query("SET NAMES cp1251");
if ($res = $db->query(‘SELECT * FROM `City`’)) {
while ($pole = $res->fetch_object()) {
echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;
}
$res->close();
}
$db->close();
}
else {
echo "Не удалось установить подключение к базе данных";
}
? data_seek(<Смещение>) перемещает указатель результата на выбранную строку. Нумерация начинается с нуля:
$host = "localhost";
@$db = new mysqli($host, "root", "123456", "tests");
if (!mysqli_connect_errno()) {
$db->query("SET NAMES cp1251");
if ($res = $db->query(‘SELECT * FROM `City`’)) {
$res->data_seek(1);
$pole = $res->fetch_object();
echo $pole->id_City . ‘ – ‘ . $pole->City . ‘<br>’;
$res->close();
}
$db->close();
}
else {
echo "Не удалось установить подключение к базе данных";
}
Функция mysqli_real_escape_string(<Идентификатор соединения>,
<Строка>) в процедурном стиле и метод real_escape_string(<Строка>) в объектном стиле экранируют все специальные символы в строке, учитывая кодировку соединения. Возвращают строку, которую можно безопасно ис- пользовать в SQL-запросах. Если в файле php.ini включена директива magic_quotes_gpc, то следует удалить автоматически добавленные обратные косые черты, а затем воспользоваться функцией mysqli_real_escape_string() или методом real_escape_string():
$new_city = "Д’Арк"; // Такие данные передаются из формы
$host = "localhost";
if (@$db = mysqli_connect($host, "root", "123456", "tests")) {
mysqli_query($db, "SET NAMES cp1251");
// Если директива magic_quotes_gpc включена,
// то удаляем защитные косые черты
if (get_magic_quotes_gpc()) {
$new_city = stripcslashes($new_city);
}
// Экранируем спецсимволы
$new_city = mysqli_real_escape_string($db, $new_city);
$query = "INSERT INTO `City` VALUES(NULL, ‘$new_city’)";
mysqli_query($db, $query);
if ($res = mysqli_query($db, ‘SELECT * FROM `City`’)) {
while ($pole = mysqli_fetch_row($res)) {
echo $pole[0] . ‘ – ‘ . $pole[1] . ‘<br>’;
}
mysqli_free_result($res);
}
mysqli_close($db);
}
else {
echo ’Не удалось установить подключение к базе данных’;
}
В НИМ АНИЕ !
Никогда напрямую не передавайте в SQL-запрос данные, полученные из полей формы. Это потенциальная угроза безопасности. Всегда применяйте функцию mysqli_real_escape_string() или метод real_escape_string().
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)
Похожие посты:
- Изменение вида элементов формы с помощью CSS (0)
- Тестирование сайта в различных броузерах при наличии только одной ОС (0)
- Проверка установки Django (0)
- Класс Number. Работа с числами (0)
- Класс Array. Работа с массивами и их сортировка (0)
- Класс Date. Получение текущей даты и времени. (0)
- Объект selection. Проверка наличия выделенного фрагмента (0)