Работа с MySQLi
Работа с MySQLi
MySQLi - это улучшенный драйвер для работы с базами данных MySQL
Подробнее о драйвере вы можете прочитать в Википедии
Несколько примеров:
Инициализация базы данных
<?php
$mysqli = new mysqli('localhost','user','password','base');
if(!$mysqli) $mysqli->error;
Установка кодировки
<?php
$mysqli->set_charset('utf8');
Запрос в базу данных
<?php
//готовим запрос
$result = $mysqli->prepare("SELECT `col1`, `col2` FROM `table` WHERE `id`=?");
//вставляем параметры.
//'i' - integer, 'd' - double или float, 's' - string
$result->bind_param('i', $_GET['id']);
//выполняем запрос
if($result->execute()){
//подготавливаем переменные в которые будут занесены результаты
$result->bind_result($col1, $col2);
//заполняем переменные
$result->fetch();
//освобождаем память
$result->close();
}else{
//если запрос Не выполнился
//выдаем ошибку
die('error - '.$mysqli->errno.' - '.$mysqli->error);
}
Количество записей(1 вариант)
На примере предыдущего запроса
<?php
if($result->execute()){
$count = $result->num_rows;
$result->close();
}
Количество записей (2 вариант)
<?php
$result = $mysqli->prepare("SELECT COUNT(*) as `count` FROM `table`");
if($result->execute()){
$result->bind_result($count);
$result->fetch();
$result->close();
}
Последний id insert
<?php
$result = $mysqli->prepare("INSERT INTO `table` (`col_1`,`col_2`) VALUES (?,?)");
$result->bind_param('is', $int_val, $string_val);
if($result->execute()){
$last = $mysqli->insert_id;
$result->close();
}
Чтобы упростить работу с бд можно создать пользовательскую функцию, например:
<?php
function db(){
static $mysqli = null;
if(!$mysqli){
$mysqli = new mysqli('localhost','user','password','base');
$mysqli->set_charset('utf8');
}
return $mysqli;
}
function prepare($val){
return db()->prepare($val);
}
function otherUserFunc(){
$data = prepare("SELECT `password` FROM `users` WHERE `id`=?");
$data->bind_param('i', $_POST['id']);
if($data->execute()){
$data->bind_result($password);
$data->fetch();
$data->close();
}
if($password !== $_POST['password']){
return false;
}else{
return true;
}
}
Один совет! Откажитесь от "*" в запросе, доставайте только нужные данные, пример:
<?php
"SELECT `id`,`text` FROM `news` WHERE `id`=?";
Спасибо за внимание
CoolCMS
URL:
https://visavi.net/articles/551