English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
База данных 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;
Вывод результатов:
Использование функции mysqli_query() и команды SQL SELECT для получения данных.
Эта функция выполняет SQL команду, а затем через функцию PHP mysqli_fetch_array() Для использования или вывода всех данных запроса.
Функция mysqli_fetch_array() изымает одну строку из результата набора в виде ассоциативного массива, или числового массива, или и того и другого Возвращает массив, созданный на основе строк из результата набора, если больше строк, то возвращает false.
Следующий пример показывает, как читать все записи из таблицы w3codebox_tbl.
Попробуйте следующий пример для отображения всех записей из таблицы w3codebox_tbl.
<?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:
<?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:
<?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 для освобождения памяти.
Следующий пример демонстрирует использование этой функции.
Попробуйте следующий пример:
<?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); ?>
Результат вывода показан ниже: