Loading...
PHP/MySQL | PDO vs MySQLi
PhpStorm (11.02.2019 в 17:17)
Сибирский (11.02.2019 в 17:13)
PhpStorm, вот что Вы за язва, Артём Анатольевич, парень с добрыми помыслами, никому насрать не сказал, а Вы вот так вот ))))


тема звучит так: наблюдаю геморрой при написании подготовленных запросов, особенно при бинде параметров, но страх как хочется заюзать PDO, поэтому дайте мне обёртку

даю


<?php

class MySQL
{
protected static $connection = null;

public 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) {
echo $error->getMessage();
die();
}
}
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;
}

public 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;
}
}


ждём от ТС следующего вопроса, как её юзать *arbuz*

Как её юзать? Гг
only pdo
Еженедельная рубрика на бумасе: pdo и mysqli
Какая разница если у тебя все равно говно код?
Dizzy221 (15.03.2019 в 09:55)
Еженедельная рубрика на бумасе: pdo и mysqli
Какая разница если у тебя все равно говно код?

+
DenSBK, у меня есть очень простая обёртка проще некуда) будет что то типо
query("SELECT * FROM user WHERE id = ? ", array($id));
Это ПДО пиши в лс дам
Обёртка на такие случаи имеется
PhpStorm,
Вы не можете пользоваться почтой, так как Вы не набрали 10 рейтинга
___________________
не могу ничего ответить...токо в коментак писать есть возможность! бл...
маякни на ватсап +7 924 100 83 13 дедо к тебе есть на миллион!))) помощь кодера нужна
client465 (15.03.2019 в 10:27)
PhpStorm,
Вы не можете пользоваться почтой, так как Вы не набрали 10 рейтинга
___________________
не могу ничего ответить...токо в коментак писать есть возможность! бл...
маякни на ватсап +7 924 100 83 13 дедо к тебе есть на миллион!))) помощь кодера нужна


deepin.mailbox@gmail.com
Jquery (15.03.2019 в 09:44)
PhpStorm (11.02.2019 в 17:17)
Сибирский (11.02.2019 в 17:13)
PhpStorm, вот что Вы за язва, Артём Анатольевич, парень с добрыми помыслами, никому насрать не сказал, а Вы вот так вот ))))


тема звучит так: наблюдаю геморрой при написании подготовленных запросов, особенно при бинде параметров, но страх как хочется заюзать PDO, поэтому дайте мне обёртку

даю


<?php

class MySQL
{
protected static $connection = null;

public 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) {
echo $error->getMessage();
die();
}
}
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;
}

public 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;
}
}


ждём от ТС следующего вопроса, как её юзать *arbuz*

Как её юзать? Гг



<?php
// подключение
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";// если класс MySQL находится в одной папке с файлом, где он подключается, то путь_к_классу/ указывать не нужно
});
// пример использования
$data = MySQL::run('select login from users where email = ? limit 1', [$_POST['email']])->fetchObject();
if (is_object($data)) echo $data->login;
pdo Гг
Онлайн: 0
Время:
Gen. 0.1301
(c) Bym.Guru 2010-2025