English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Запрос данных MySQL

База данных MySQL использует запрос SELECT SQL для поиска данных.

Вы можете искать данные в базе данных через командную строку mysql> или через PHP-скрипт.

Синтаксис

Ниже приведен общий синтаксис SELECT для поиска данных в базе данных MySQL:

SELECT имя_столбца, имя_столбца
FROM имя_таблицы
[WHERE предложение]
[LIMIT N][ OFFSET M]
  • В запросе поиска вы можете использовать одну или несколько таблиц, разделенных запятыми (,), и использовать предложение WHERE для установки условий поиска.

  • Команда SELECT может читать одну или несколько записей.

  • Вы можете использовать звездочку (*) для замены других полей, и SELECT-запрос вернет все поля таблицы.

  • Вы можете использовать предложение WHERE для включения любых условий.

  • Вы можете использовать атрибут LIMIT для установки количества возвращаемых записей.

  • Вы можете использовать OFFSET для указания начального значения смещения для SELECT-запроса. По умолчанию смещение равно 0.

Получение данных через командную строку

Следующий пример покажет, как получить данные из MySQL таблицы w3codebox_tbl через команду SQL SELECT:

Онлайн пример

Следующий пример вернет все записи из таблицы w3codebox_tbl:

select * from w3codebox_tbl;

Вывод результатов:

Использование PHP скрипта для получения данных

Использование функции mysqli_query() и команды SQL SELECT для получения данных.

Эта функция выполняет SQL команду, а затем через функцию PHP mysqli_fetch_array() Для использования или вывода всех данных запроса.

Функция mysqli_fetch_array() изымает одну строку из результата набора в виде ассоциативного массива, или числового массива, или и того и другого Возвращает массив, созданный на основе строк из результата набора, если больше строк, то возвращает false.

Следующий пример показывает, как читать все записи из таблицы w3codebox_tbl.

Онлайн пример

Попробуйте следующий пример для отображения всех записей из таблицы w3codebox_tbl.

Использование mysqli_fetch_array с параметром MYSQLI_ASSOC для получения данных:

<?php
$dbhost = 'localhost'; // адрес хоста mysql сервера
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8");
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval )
{
    die('Не удалось прочитать данные: ' . mysqli_error($conn));
}
echo '<h2>Основной учебник mysqli_fetch_array тест</h2>';
echo '<table border="1"><tr><td>ID учебника</td><td>Заголовок</td><td>Автор</td><td>Дата подачи</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row['w3codebox_id']}</td>".
         "<td>{$row['w3codebox_title']} </td>".
         "<td>{$row['w3codebox_author']} </td>".
         "<td>{$row['submission_date']} </td>".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Результат вывода показан ниже:

В предыдущем примере каждой строке, которую читают, назначается переменная $row, а затем каждый из значений выводится.

Внимание:Помните, если вам нужно использовать переменную в строке, поместите переменную в фигурные скобки.

Во втором параметре функции PHP mysqli_fetch_array() в предыдущем примере: MYSQLI_ASSOC, Установите этот параметр, чтобы результаты запроса возвращались в виде ассоциативного массива, вы можете использовать имена полей в качестве индексов массива.

PHP предоставляет другую функцию mysqli_fetch_assoc(), эта функция получает одну строку из результата набора в виде ассоциативного массива. Возвращает ассоциативный массив, созданный на основе строк из результата набора, если больше строк, то возвращает false.

Онлайн пример

Попробуйте следующий пример, который использует: mysqli_fetch_assoc() Функция для вывода всех записей из таблицы w3codebox_tbl:

Использование mysqli_fetch_assoc для получения данных:

<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8");
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval )
{
    die('Не удалось прочитать данные: ' . mysqli_error($conn));
}
echo '<h2>Основной учебник mysqli_fetch_assoc тест</h2>';
echo '<table border="1"><tr><td>ID учебника</td><td>Заголовок</td><td>Автор</td><td>Дата подачи</td></tr>';
while($row = mysqli_fetch_assoc($retval))
{
    echo "<tr><td> {$row['w3codebox_id']}</td>".
         "<td>{$row['w3codebox_title']} </td>".
         "<td>{$row['w3codebox_author']} </td>".
         "<td>{$row['submission_date']} </td>".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Результат вывода следующий:

Вы также можете использовать константу MYSQLI_NUM в качестве второго параметра функции PHP mysqli_fetch_array(), чтобы вернуть массив чисел.

Онлайн пример

Следующий пример использует MYSQLI_NUM Параметр показывает все записи из таблицы w3codebox_tbl:

Использование mysqli_fetch_array с параметром MYSQLI_NUM для получения данных:

<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8");
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval )
{
    die('Не удалось прочитать данные: ' . mysqli_error($conn));
}
echo '<h2>Основной учебник mysqli_fetch_array тест</h2>';
echo '<table border="1"><tr><td>ID учебника</td><td>Заголовок</td><td>Автор</td><td>Дата подачи</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_NUM))
{
    echo "<tr><td> {$row[0]}</td> ".
         "<td>{$row[1]} </td> ".
         "<td>{$row[2]} </td> ".
         "<td>{$row[3]} </td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

Результат вывода показан ниже:

Результаты всех трёх примеров выше одинаковы.

Освобождение памяти

После выполнения SELECT предложения, освобождение памяти курсора - это хорошая привычка.

Можете использовать функцию mysqli_free_result() PHP для освобождения памяти.

Следующий пример демонстрирует использование этой функции.

Онлайн пример

Попробуйте следующий пример:

Использование mysqli_free_result для освобождения памяти:

<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8");
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval )
{
    die('Не удалось прочитать данные: ' . mysqli_error($conn));
}
echo '<h2>Основной учебник mysqli_fetch_array тест</h2>';
echo '<table border="1"><tr><td>ID учебника</td><td>Заголовок</td><td>Автор</td><td>Дата подачи</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_NUM))
{
    echo "<tr><td> {$row[0]}</td> ".
         "<td>{$row[1]} </td> ".
         "<td>{$row[2]} </td> ".
         "<td>{$row[3]} </td> ".
         "</tr>";
}
echo '</table>';
// Освобождение памяти
mysqli_free_result($retval);
mysqli_close($conn);
?>

Результат вывода показан ниже: