Обработка результатов запросов
Выполнение запросов, обработка результатов и получение данных
Описываем нужный SQL-запрос и помещаем его в переменной $sql .
Затем выполняем запрос к базе данных с помощью метода query объекта mysqli.
Если ошибок нет — получим объект mysqli_result , который сохраняется в переменной $result .
Если же в SQL-запросе присутствуют ошибки — метод query вернет FALSE ,
тогда с помощью оператора throw генерируем исключение, которое обрабатываем с помощью Exception .
// устанавливаем соединение с базой данных newDB (создаем экземпляр класса new mysqli())
$conn = new mysqli($servername, $username, $password, $dbname);
// SQL-запрос
$sql = «SELECT * FROM users «;
// запрос к базе данных
$result = $conn->query($sql);
if ($result === FALSE) <
throw new \Exception(‘Ошибка в SQL-запросе!’);
>else <
echo «Выполнено:
«;
>
Получение данных одной строки в виде ассоциативного массива:
Получение данных одной строки в виде индексированного массива:
Получение данных одной строки в виде объекта:
$entries = array();
while ($entry = $result->fetch_object()) <
$entries[] = $entry;
>
Получение всех строк в виде ассоциативного массива:
Если результат не содержит количество результатов выборки — num_rows , выведем: «Нет результатов».
Выражение $result->$num_rows — получает число рядов в результирующей выборке
if (!$result->num_rows) <
echo «Нет результатов:
«;
>
Описываем нужный SQL-запрос и помещаем его в переменной $sql .
Затем выполняем запрос к базе данных с помощью функции mysqli_query($conn, $sql) и помещаем результат в переменную $result
// устанавливаем соединение с базой данных newDB
$conn = mysqli_connect($servername, $username, $password, $dbname);
// SQL-запрос
$sql = «SELECT * FROM users»;
// запрос к базе данных
$result = mysqli_query($conn, $sql);
Эта функция возвращает одну запись выборки в виде индексированного массива:
Эта функция возвращает одну запись выборки в виде ассоциативного массива:
Эта функция в зависимости от параметров может вернуть либо индексированный массив,
либо ассоциативный массив, либо массив, содержащий и индексы и строковые ключи:
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
Получение всего результата .
Эта функция возвращает двухмерный массив, содержащий все записи:
$row = mysqli_fetch_all($result, MYSQLI_ASSOC);
Если запрос к базе данных — выполнен, тогда выведем сообщение «Выполнено».
В противном случае выведем сообщение «Ошибка» и выведем информацию об ошибке mysqli_error($conn) :
if(mysqli_query($conn, $sql)) <
echo «Выполнено»;
>else <
echo «Ошибка:
» . mysqli_error($conn);
>
Выбираем данные из таблицы workers (Стиль ООП).
$servername = «localhost» ;
$username = «root» ;
$password = «» ;
$dbname = «newDB» ;
// Устанавливаем соединение с сервером MySQL:
$conn = new mysqli ( $servername , $username , $password , $dbname );
// Проверка соединения:
if ( $conn -> connect_error ) die ( «Не удалось подключиться: » . $conn -> connect_error );
>
echo «Соединение успешно установлено» ;
//1. Выбрать значения всех полей из таблицы workers:
// $sql = «SELECT * FROM workers «;
//2. Выбрать значения всех полей из таблицы workers, где >
// $sql = «SELECT * FROM workers WHERE >
//3. Выбрать значение поля id из таблицы workers, где значение поля name = ‘Иван’:
// $sql = «SELECT id FROM workers WHERE name = ‘Иван'»;
//4. Выбрать значение поля name из таблицы workers, где id > 5:
// $sql ;
//5. Выбрать значения всех полей из таблицы workers,
// где значение поля name = ‘Сидор’ И значение поля age > 30:
// $sql ;
//6. Иногда нужно указать много значений:
$sql = «SELECT name FROM workers WHERE AND AND >;
// Выполнение запроса
$result = $conn -> query ( $sql );
// Проверка выполнения запросов
if ( $result === FALSE ) throw new \ Exception ( ‘Ошибка в SQL-запросе!’ );
> else <
echo «Выполнено:
» ;
>
// получить все строки в виде ассоциативного массива
$entries = $result -> fetch_all ( MYSQLI_ASSOC );
// num_rows содержит количество результатов выборки
if (! $result -> num_rows ) echo «Нет результатов:
» ;
>
// закрываем соединение
$conn -> close ();
?>
mysqli_fetch_object
Fetches one row of data from the result set and returns it as an object, where each property represents the name of the result set’s column. Each subsequent call to this function will return the next row within the result set, or null if there are no more rows.
If two or more columns of the result have the same name, the last column will take precedence and overwrite any previous data. To access multiple columns with the same name, mysqli_fetch_row() may be used to fetch the numerically indexed array, or aliases may be used in the SQL query select list to give columns different names.
Note: This function sets the properties of the object before calling the object constructor.
Note: Field names returned by this function are case-sensitive.
Note: This function sets NULL fields to the PHP null value.
Parameters
The name of the class to instantiate, set the properties of and return. If not specified, a stdClass object is returned.
An optional array of parameters to pass to the constructor for class objects.
Return Values
Returns an object representing the fetched row, where each property represents the name of the result set’s column, null if there are no more rows in the result set, or false on failure.
Changelog
Version | Description |
---|---|
8.0.0 | constructor_args now accepts [] for constructors with 0 parameters; previously an exception was thrown. |
Examples
Example #1 mysqli_result::fetch_object() example
mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );
$query = «SELECT Name, CountryCode FROM City ORDER BY ID DESC» ;
$result = $mysqli -> query ( $query );
/* fetch object array */
while ( $obj = $result -> fetch_object ()) printf ( «%s (%s)\n» , $obj -> Name , $obj -> CountryCode );
>
mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );
$query = «SELECT Name, CountryCode FROM City ORDER BY ID DESC» ;
$result = mysqli_query ( $link , $query );
/* fetch associative array */
while ( $obj = mysqli_fetch_object ( $result )) printf ( «%s (%s)\n» , $obj -> Name , $obj -> CountryCode );
>
The above examples will output something similar to:
Pueblo (USA) Arvada (USA) Cape Coral (USA) Green Bay (USA) Santa Clara (USA)
See Also
- mysqli_fetch_array() — Fetch the next row of a result set as an associative, a numeric array, or both
- mysqli_fetch_assoc() — Fetch the next row of a result set as an associative array
- mysqli_fetch_column() — Fetch a single column from the next row of a result set
- mysqli_fetch_row() — Fetch the next row of a result set as an enumerated array
- mysqli_query() — Performs a query on the database
- mysqli_data_seek() — Adjusts the result pointer to an arbitrary row in the result
Вывод данных из mysql в классах
здесь должна подставляться переменная коннекта (коотроая обьявлена в другой функции)
mysqli_query($connect,$sql);
Как ее передать из той фнкции( mysql()) в эту?
Вывод данных из MySQL
У меня в базе данных есть таблица с товарами. Мне нужно вывести их на страницу. Как это сделать?
Вывод данных из БД MySQL с использованием MVC и ООП
Здравствуйте. Есть БД testing с таблицей testing с тремя полями: id, FIO, gryppa. Есть файл.
Вывод данных из mysql определенного зарегистрированного человека
Здравствуйте! Столкнулся с такой проблемой, есть форма, которая обрабатывается и записывает данные.
Ajax отправка данных из формы в базу mysql и вывод из базы mysql
$(function() < $('#chat_submit').click(function(e) < e.preventDefault(); .
в таких подобных классах обычно не пишут сами запросы
Сообщение от andyyy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
public function __construct() { try { $this->mysqli = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME ); $this->mysqli->set_charset( "utf8" ); } catch ( Exception $e ) { die( 'Unable to connect to database' ); } } Пример: public function select($query, $params = false /* Тут как-нибудь а реализовать передачу параметров */) { $result = $this->mysqli->query($query); return (!$result) ? false : $result; } Пример: public function escape($data) { if( !is_array( $data ) ) { $data = $this->mysqli->real_escape_string( $data ); } else { $data = array_map([$this, 'escape' ], $data); } return $data; }
Сообщение было отмечено andyyy как решение
Решение
andyyy, для этого ваша функция $this->mysql() должна возвращать идентификатор соединения с базой, проще говоря — линк:
protected function mysql() { $link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db'); if (!$link) die('Ошибка подключения'); return $link; }
mysqli_query($this->mysql(), $sql);
НО! Для того, чтобы сохранить идентификатор соединения в объекте класса «a» лучше создать параметр $link, которому присвоить идентификатор соединения с базой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
class a { protected $link; public function __construct() { if ( !$this->mysql() ) exit('Ошибка подключения к базе данных!'); // здесь функция подключения ; } public function select ($sql = "SELECT * FROM `test`") { if(!$r = mysqli_query($this->link, $sql)) {die("Ошибка ");} $array = mysqli_fetch_array($r); echo $array['id']; // для пробы } protected function mysql() { $link = @mysqli_connect('localhost', 'my_user', 'my_password', 'my_db'); // С помощью @ подавляем ошибку, которая возникнет при неверном подключении if (!$link) return false; // Возвращаем false, если подключение не удалось $this->link = $link; return true; // Если удалось - true } } $a = new a; $a->select();
Лучше писать, как FloppyDisc , либо использовать класс PDO вместо MySQLi.