n = array_shift ($ args);
// Формуємо запит по шаблоном.
$> query = call_user_func_array ("mysql_make_qw", $> args);
// Віклікаємо SQL-функцію.
> return $> conn! == null? mysql_query ($ query, $> conn): mysql_query ($ query);
}// string mysql_make_qw ($ query, $> argl, $> arg2, ...)
// Ця функція формуєSQL-запит по шаблоном $> query,
// Який містіть placeholders.
> function mysql_make_qw ()
{$> args = func_get_args ();
// Отрімуємо в $> tmp1ССИЛКУ на шаблон запиту.
$> tmp1 = & $> args [0];
$> tmp1-str_replace ("%", "%%", $> tmp1);
$> tmp1 = str_replace ("?", "%> s", $> tmp1);
// После цього $> args [0] такоже виявило зміненім.
// Теперекраніруем ВСІ Можливі аргументи, крім ПЕРШИЙ.
> foreach ($> argsas $> i => $ v)
{> if (! $ і) continue;// це шаблон
> if (> is_int ($ v)) continue;// цілі числа непотрібно екрануваті
$> args [$ i] = "'".> mysql_escape_string ($ v). "'";}
// Про всяк випадок заповнюємо 20 останніх аргументів непріпустімімі
// значення, щоб у разі, ЯКЩО число "?" перевіщує кількість
// параметрів, відавалася помилка SQL-запита (поможет при налагодженні).
> for ($> i = $ c = count ($ args) -1; $> i <$ c +20; $ і + +)
$> args [$ i +1] ="> UNKNOWN_PLACEHOLDER_ $ i";
// Формуємо SQL-запит +.
> returncall_user_func_array ("sprintf", $> args);}?>
Если прібраті пояснювальні записи, то розмір файлу lib_mysql_qw.php зменшіть почти Тричі:
PHP # # Найпростіша функція до роботи з placeholders.
> functionmysql_qw ()
{$> args = func_get_args ();
$> соnn = null;
> if (> is_resource ($ args [0])) $> conn = array_shift ($ args);
$> query = call_user_func_array ("mysql_make_qw", $> args);
> return $> conn! == null? mysql_query ($ query, $> conn): mysql_query ($ query);}
> functionmysql_make_qw ()
{$> args = func_get_args ();
$> tmp1 = & $> args [0];
$> tmp1-str_replace ("%", "%%", $> tmp1);
$> tmp1 = str_replace ("?", "%> s", $> tmp1);
> foreach ($> argsas $> i => $ v)
{> if (! $ і) continue;
> if (> is_int ($ v)) continue...