PHP/MySQL | Для анализа, оценки, советов, дополнений и изменен
Тема закрыта by
DELETED
Причина: код уже доработан и успешно используется
Причина: код уже доработан и успешно используется

DELETED
Автор
18 августа 2017, в 13:44
Delete
<?php
class MyPDO
{
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
if (empty($params[0])) :
foreach ($params as $item => $value) :
$query->bindValue($item, $value, self::type($value));
endforeach;
else :
$i = 1;
foreach ($params as $value) :
$query->bindValue($i++, $value, self::type($value));
endforeach;
endif;
$query->execute();
return $query;
}
public static function connect()
{
return new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => true]);
}
public static function type($value)
{
if (is_bool($value)) :
return $type = PDO::PARAM_BOOL;
elseif (is_null($value)) :
return $type = PDO::PARAM_NULL;
elseif (is_int($value)) :
return $type = PDO::PARAM_INT;
elseif (is_string($value)) :
return $type = PDO::PARAM_STR;
else :
return $type = false;
endif;
}
}
// пример использования
MyPDO::run('запрос', [массив параметров])->метод();

PhpStorm, Зачем такая конструкция?
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
if (empty($params[0])) :
foreach ($params as $item => $value) :
$query->bindValue($item, $value, self::type($value));
endforeach;
else :
$i = 1;
foreach ($params as $value) :
$query->bindValue($i++, $value, self::type($value));
endforeach;
endif;
$query->execute();
return $query;
}
А почему не так.
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
$query->execute($params);
return $query;
}
P.S. Не понял, вот и спрашиваю. Просьба тапками не бросать.
________
посл. ред. 19.08.2017 в 07:15; всего 1 раз(а); by TuT
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
if (empty($params[0])) :
foreach ($params as $item => $value) :
$query->bindValue($item, $value, self::type($value));
endforeach;
else :
$i = 1;
foreach ($params as $value) :
$query->bindValue($i++, $value, self::type($value));
endforeach;
endif;
$query->execute();
return $query;
}
А почему не так.
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
$query->execute($params);
return $query;
}
P.S. Не понял, вот и спрашиваю. Просьба тапками не бросать.
________
посл. ред. 19.08.2017 в 07:15; всего 1 раз(а); by TuT
А добавить можно PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' что бы проблем с кодировкой не было.

DELETED
Автор
20 августа 2017, в 3:09
Delete
TuT (19.08.2017 в 07:51)
А добавить можно PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' что бы проблем с кодировкой не было.
А добавить можно PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' что бы проблем с кодировкой не было.
там есть charset=utf8
MYSQL_ATTR_INIT_COMMAND уже лишнеее будет, наверное, чтобы не долбить лишний раз интерпретатор, хотя по скорости вроде быстрее, спасибо

DELETED
Автор
20 августа 2017, в 3:11
Delete
TuT (19.08.2017 в 07:14)
PhpStorm, Зачем такая конструкция?
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
if (empty($params[0])) :
foreach ($params as $item => $value) :
$query->bindValue($item, $value, self::type($value));
endforeach;
else :
$i = 1;
foreach ($params as $value) :
$query->bindValue($i++, $value, self::type($value));
endforeach;
endif;
$query->execute();
return $query;
}
А почему не так.
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
$query->execute($params);
return $query;
}
P.S. Не понял, вот и спрашиваю. Просьба тапками не бросать.
PhpStorm, Зачем такая конструкция?
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
if (empty($params[0])) :
foreach ($params as $item => $value) :
$query->bindValue($item, $value, self::type($value));
endforeach;
else :
$i = 1;
foreach ($params as $value) :
$query->bindValue($i++, $value, self::type($value));
endforeach;
endif;
$query->execute();
return $query;
}
А почему не так.
public static function run($sql, $params = [])
{
$query = self::connect()->prepare($sql);
$query->execute($params);
return $query;
}
P.S. Не понял, вот и спрашиваю. Просьба тапками не бросать.
в ней идёт автоматом бинд параметров, проверяется массив с именованнами или без
то что Вы предложили просто обработает массив метедом execute()
________
посл. ред. 20.08.2017 в 15:23; всего 2 раз(а); by PhpStorm
Плохой приме организации синглтона. Я представляю что будет с сайтом, если я буду выполнять сразу 10-20 запросов, а то и больше)) Вообще бред если честно, зачем создавать отдельный класс для работы с классом.. Можно организовать отдельно контейнер, один раз создать экземпляр и оперировать им как душе угодно)

DELETED
Автор
20 августа 2017, в 6:03
Delete
178396284 (20.08.2017 в 04:46)
Плохой приме организации синглтона. Я представляю что будет с сайтом, если я буду выполнять сразу 10-20 запросов, а то и больше)) Вообще бред если честно, зачем создавать отдельный класс для работы с классом.. Можно организовать отдельно контейнер, один раз создать экземпляр и оперировать им как душе угодно)
Плохой приме организации синглтона. Я представляю что будет с сайтом, если я буду выполнять сразу 10-20 запросов, а то и больше)) Вообще бред если честно, зачем создавать отдельный класс для работы с классом.. Можно организовать отдельно контейнер, один раз создать экземпляр и оперировать им как душе угодно)
и опять же вызывать класс
Вы не поняли - суть обёртки - автоматом биндить параметры, а то что PDO - бред, то это Вы можете написать разработчикам PHP
________
посл. ред. 20.08.2017 в 06:03; всего 1 раз(а); by PhpStorm
PhpStorm (20.08.2017 в 03:09)
TuT (19.08.2017 в 07:51)
А добавить можно PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' что бы проблем с кодировкой не было.
там есть charset=utf8
MYSQL_ATTR_INIT_COMMAND уже лишнеее будет, наверное, чтобы не долбить лишний раз интерпретатор, хотя по скорости вроде быстрее, спасибо
TuT (19.08.2017 в 07:51)
А добавить можно PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' что бы проблем с кодировкой не было.
там есть charset=utf8
MYSQL_ATTR_INIT_COMMAND уже лишнеее будет, наверное, чтобы не долбить лишний раз интерпретатор, хотя по скорости вроде быстрее, спасибо
Сталкивался с такой проблемой, что при создании текста на кириллице выводит "вывыв" или вывод на кириллице и о этому всегда добавляю.
Да и вообще, не понимаю, зачем изобретать велосипед, когда его суть нормальные обертки в интернете
Avenax (20.08.2017 в 15:00)
Да и вообще, не понимаю, зачем изобретать велосипед, когда его суть нормальные обертки в интернете
Да и вообще, не понимаю, зачем изобретать велосипед, когда его суть нормальные обертки в интернете
Не понимаю суть даннго проекта, зачем держать проект с форумом, когда можно посмотреть в интернете?
Вопрос на засыпку
