Koenig, там идёт синхронизация маркеров и переданных аргументов.
Если для маркера передан массив, то там идёт автоматическая подстановка нужного кол-ва маркеров.
--
Я х.з, если найду класс, то скину.
Kazzone-1x-net (04.09.2012/09:51)База данных - по русски
Кто можеть мне перевести бд?
class DB
{
protected static $connection;
protected static $config = [
// ...
];
/* */
static function conf($key, $value = null)
{
if (is_null($value) && is_array($key)) {
static::$config = array_merge(static::$config, $key);
} else {
static::$config[ $key ] = $value;
}
}
/* */
static function connection()
{
if (is_null(static::$connection)) {
$config = static::$config;
try {
static::$connection = new \PDO($config['dsn'], $config['user'], $config['password'], [
\PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
]);
} catch (\PDOException $e) {
throw new \Exception('Не удалось установить соединение с базой данных.');
}
}
return static::$connection;
}
/* */
static function query($query, array $parameters = [])
{
$return = false;
if (count($parameters) == 0) {
$return = static::connection()->query($query);
} else {
if ($statement = static::connection()->prepare(static::parseQuery($query, $parameters))) {
if ($statement->execute(static::parametersFlatten($parameters))) {
$return = $statement;
}
}
}
return $return;
}
/* */
static function __callStatic($method, $parameters)
{
return call_user_func_array(array(static::connection(), $method), $parameters);
}
/* */
protected static function parseQuery($query, $parameters)
{
$querySegments = explode('?', $query);
$query = $querySegments[0];
$i = 1;
foreach ($parameters as $parameter) {
if (is_array($parameter)) {
$query .= rtrim(str_repeat('?,', count($parameter)), ',');
$query .= $querySegments[ $i ];
} else {
$query .= '?';
$query .= $querySegments[ $i ];
}
++$i;
}
return $query;
}
/* */
protected static function parametersFlatten(array $parameters)
{
$i = 0;
while ($i < count($parameters)) {
if (is_array($parameters[ $i ])) {
array_splice($parameters, $i, 1, $parameters[ $i ]);
} else {
++$i;
}
}
return $parameters;
}
}
DB::conf([
'dsn' => 'mysql:host=127.0.0.5; dbname=brandmob',
'user' => 'mysql',
'password' => 'mysql',
]);
// или так
// DB::conf('dsn', 'mysql:host=127.0.0.5; dbname=test');
// DB::conf('user', 'mysql');
// DB::conf('password', 'mysql');
$users = DB::query('SELECT * FROM tbl_users WHERE id IN(?) AND ip = ?', [[1, 4, 7], 2130706437])->fetchAll();
// так можно получить непосредственный доступ к инстасу PDO
DB::connection()->lastInsertId();
// или, можно сразу обращаться к методам PDO через хук (__callStatic)
DB::exec('DELETE FROM tbl_users WHERE id = 2');
$sql = mysql_query("select `name`, `msg` from `coment`");
while($post = mysql_fetch_assoc($sql))
{
echo '<div>Автор: '.$post['name'].'</div>
<div>Коммент: '.$post['msg'].'</div>';
}