Обучение/Помощь новичкам | Mysqli
Ребят дайте пж удобный и практичный класс для роботы с бд mysqli. С примерами запросов пж.
А чем тебя чистый mysqli не устраивает?
Simptom333 , А вдруг он потом захочет перейти на pdo. Класс можно легко переделать и использовать те же функции (а по умному нужно наследовать от интерфейса).
Или открывать каждый файл и переписывать запросы
Или открывать каждый файл и переписывать запросы
SlavaLegend , возьми сразу ORM.
monobogdan , Что такое ОРМ?
SlavaLegend , Object relational model, объектное представление БД
monobogdan , Можете просто поделиться удобной обёрткой)? Я вообще хотел PDO использовать но так как без обёртки много писанины и не удобно, решил поискать обёртку но ничего не нашол. Решил сам попробовать написать, не получилось. Может есть у вас такая обёртка?
DELETED
21 января 2019, в 9:49
Delete
<?php
class MySQL
{
protected static $connection = null;
protected static function connection()
{
if (self::$connection === null) {
try {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=' . DB_CHAR;
$opt = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
self::$connection = new PDO($dsn, DB_USER, DB_PASS, $opt);
} catch (PDOException $error) {
die($error->getMessage());
}
}
return self::$connection;
}
public static function run($sql, $params = [])
{
$query = self::connection()->prepare($sql);
if (array_key_exists(0, $params)) {
$i = 1;
foreach ($params as $value) {
$query->bindValue($i++, $value, self::type($value));
}
} else {
foreach ($params as $key => $value) {
$query->bindValue($key, $value, self::type($value));
}
}
$query->execute();
return $query;
}
protected static function type($value)
{
if (is_int($value)) {
$type = PDO::PARAM_INT;
} elseif (is_string($value) || is_float($value)) {
$type = PDO::PARAM_STR;
} elseif (is_bool($value)) {
$type = PDO::PARAM_BOOL;
} elseif (is_null($value)) {
$type = PDO::PARAM_NULL;
} else {
$type = false;
}
return $type;
}
}
подключение
<?php
if (in_array($_SERVER['REMOTE_ADDR'], ['127.0.0.1'])) {
define('DB_HOST', '');
define('DB_NAME', '');
define('DB_CHAR', 'utf8mb4');
define('DB_USER', '');
define('DB_PASS', '');
} else {
define('DB_HOST', '');
define('DB_NAME', '');
define('DB_CHAR', 'utf8mb4');
define('DB_USER', '');
define('DB_PASS', '');
}
spl_autoload_register(function ($class) {
require_once "{$class}.php";
});
ПРИМЕР использования
<?pho
// вариант 1
$result = MySQL::run('select * from users where login = ? limit 1', [$_POST['login']])->fetchObject();
// вариант 2
$result = MySQL::run('select * from users where login = :ln limit 1', [':ln' => $_POST['login']])->fetchObject();
if (is_object($result) === true) {
echo "Пользователь {$result->login} найден";
}
________
посл. ред. 21.01.2019 в 09:50; всего 1 раз(а); by PhpStorm
PhpStorm , сложно для меня будет. Я ведь перехожу с mysql
DELETED
21 января 2019, в 9:57
Delete
SlavaLegend (21.01.2019 в 09:52)
PhpStorm , сложно для меня будет. Я ведь перехожу с mysql
PhpStorm , сложно для меня будет. Я ведь перехожу с mysql
это PDO я дал, почитайте разницу PDO и MySQLi