PHP MYSQLI Подготовленные запросы Шпаргалка

*

01.09.2019 в 19:53
Название: PHP MYSQLI Подготовленные запросы Шпаргалка
Описание:

Этот шпаргалка взята из статьи «Подготовленные запросы MYSQLI» от Hyvor Developer 12  . Обратите внимание, что весь код написан на MYSQLI OOP. Версии Mysqli Procedural и PDO будут доступны в ближайшее время.

Прежде чем мы начнем, давайте подключимся к базе данных.

<?php 
$mysqli 
= new mysqli'hostname''username''password''database' ); 
?>


1. SELECT - выбор одной строки

<?php
$stmt 
$mysqli -> prepare('SELECT name, email FROM users WHERE id = ?'); 

$userId 1;
$stmt -> bind_param('i'$userId); 
$stmt -> execute(); 
$stmt -> store_result(); 
$stmt -> bind_result($name$email); 
$stmt -> fetch();
echo 
$name;
echo 
$email;
?>

2. ВЫБРАТЬ - Выбор нескольких строк

<?php
$stmt 
$mysqli -> prepare('SELECT name, email FROM users'); 
$stmt -> execute(); 
$stmt -> store_result(); 
$stmt -> bind_result($name$email); 
while (
$stmt -> fetch()) { 
    echo 
$name
    echo 
$email
}
?>

3. SELECT - получение количества выбранных строк

<?php
$stmt 
$mysqli -> prepare('SELECT name, email FROM users');

$stmt -> execute();
$stmt -> store_result();

echo 
$stmt -> num_rows;
?>

4. SELECT - получить результаты

<?php
$stmt 
$mysqli -> prepare('SELECT name, email FROM users WHERE id > ?');
$greaterThan 1;
$stmt -> bind_param('i'$greaterThan);
$stmt -> execute();
$result $stmt -> get_result();
?>

5. ВЫБРАТЬ - с подстановочными знаками

<?php
$stmt 
$mysqli -> prepare('SELECT name, email FROM users WHERE name LIKE ?');

$like 'a%';
$stmt -> bind_param('s'$like);
$stmt -> execute();
$stmt -> store_result();
$stmt -> bind_result($name$email);

while (
$stmt -> fetch()) {
    echo 
$name;
    echo 
$email;
}
?>

6. ВЫБРАТЬ - с массивом идентификаторов

<?php
// array of user IDs
$userIdArray = [1,2,3,4];
// number of question marks
$questionMarksCount count($userIdArray);
// create a array with question marks
$questionMarks array_fill(0$questionMarksCount'?');
// join them with ,
$questionMarks implode(','$questionMarks);
// data types for bind param
$dataTypes str_repeat('i'$questionMarksCount);

$stmt $mysqli -> prepare("SELECT name, email FROM users WHERE id IN ($questionMarks)");

$stmt -> bind_param($dataTypes, ...$userIdArray);
$stmt -> execute();
$stmt -> store_result();
$stmt -> bind_result($name$email);

while (
$stmt -> fetch()) {
    echo 
$name;
    echo 
$email;
}
?>

7. ВЫБРАТЬ - ОГРАНИЧИТЬ и ОФСЕТИТЬ

<?php
$stmt 
$mysqli -> prepare("SELECT name, email FROM users LIMIT ? OFFSET ?");

// limit of rows
$limit 2;
// skip n rows
$offset 1;

$stmt -> bind_param('ii'$limit$offset);
$stmt -> execute();
$stmt -> store_result();
$stmt -> bind_result($name$email);

while (
$stmt -> fetch()) {
    echo 
$name;
    echo 
$email;
}
?>

8. ВЫБЕРИТЕ - МЕЖДУ

<?php
$stmt 
$mysqli -> prepare("SELECT name, email FROM users WHERE id BETWEEN ? AND ?");

$betweenStart 2;
$betweenEnd 4;

$stmt -> bind_param('ii'$betweenStart$betweenEnd);
$stmt -> execute();
$stmt -> store_result();
$stmt -> bind_result($name$email);

while (
$stmt -> fetch()) {
    echo 
$name;
    echo 
$email;
}
?>

9. Вставка - одна строка

<?php
$stmt 
$mysqli -> prepare('INSERT INTO users (name, email) VALUES (?,?)');

$name 'John';
$email 'john@gmail.com';

$stmt -> bind_param('ss'$name$email);
$stmt -> execute();
?>


10. INSERT - Получение идентификатора вставки

<?php
$stmt 
$mysqli -> prepare('INSERT INTO users (name, email) VALUES (?,?)');

$name 'John';
$email 'john@gmail.com';

$stmt -> bind_param('ss'$name$email);
$stmt -> execute();

echo 
'Your account id is ' $stmt -> insert_id;
?>

11. INSERT - несколько строк (рекурсивный)

<?php
$newUsers 
= [
    [ 
'sulliops''sulliops@gmail.com' ],
    [ 
'infinity''infinity@gmail.com' ],
    [ 
'aivarasco''aivarasco@gmail.com' ]
];

$stmt $mysqli -> prepare('INSERT INTO users (name, email) VALUES (?,?)');

foreach (
$newUsers as $user) {
        
    
$name $user[0];
    
$email $user[1];

    
$stmt -> bind_param('ss'$name$email);
    
$stmt -> execute();

    echo 
"{$name}'s account id is {$stmt -> insert_id}";

}
?>

12. ОБНОВЛЕНИЕ

<?php
$stmt 
$mysqli -> prepare('UPDATE users SET email = ? WHERE id = ? LIMIT 1');
    
$email 'newemail@hyvor.com';
$id 2;

$stmt -> bind_param('si'$email$id);
$stmt -> execute();
?>

13. ОБНОВЛЕНИЕ - Получите Затронутые ряды

<?php
$stmt 
$mysqli -> prepare('UPDATE users SET email = ? WHERE name = ? LIMIT 1');
    
$email 'newemail@hyvor.com';
$name 'teodor';

$stmt -> bind_param('ss'$email$name);
$stmt -> execute();

// 1
echo $stmt -> affected_rows;
?>

14. УДАЛИТЬ

<?php
$stmt 
$mysqli -> prepare('DELETE FROM users WHERE id = ?');
    
$userId 4;

$stmt -> bind_param('i'$userId);
$stmt -> execute();

// number of deleted rows
echo $stmt -> affected_rows;
?>


Надеюсь вам понравилось, если хотите узнать больше , смотрите тут 
https://developer.hyvor.com/php/mysqli-prepared-statements
Параметры для bind_param тут  https://php.ru/manual/mysqli-stmt.bind-param.html





Keywords: mysqli подготовленные запросы

181



На главную