Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Строка-шаблон с подстановкой параметров / 7 сообщений из 7, страница 1 из 1
19.09.2013, 17:58
    #38401941
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Строка-шаблон с подстановкой параметров
Есть PHP-скрипт, который работает с базой данных.
Чтобы упорядочить работу, я использую примерно такой код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$sql = (
  'cmd1'=>"select * from table1 where user_id = $user_id",
  'cmd2'=>"insert into table2(fld1,fld2) values ('$field_code','new')"
);
...
if ($action=='cmd1') {
  $user_id = 1;
  mysql_query($sql['cmd1']);
} elseif ($action=='cmd2') {
  $field_code = 'test';
  mysql_query($sql['cmd2']);
}
...



То есть я хочу использовать в строках переменные, которые заменяются на значения в момент их использования, а не в момент их определения. Возможно ли это?
Или нужно обертывать строки-шаблоны в самодельную функцию, которая будет искать в тексте строковые шаблоны и заменять их на значения?

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
19.09.2013, 18:45
    #38401997
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Строка-шаблон с подстановкой параметров
pdo bind
...
Рейтинг: 0 / 0
19.09.2013, 19:03
    #38402016
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Строка-шаблон с подстановкой параметров
А чем это поможет?
bind_param делает примерно тоже самое.
Недостатки: используются неименованные параметры (позиционные), привязка идет по ссылке.

Не посоветуете, как улучшить такую обертку?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
function db_query($cmd, $args)
{
	global $dbh, $sql;
	$s = $sql[$cmd];
	if (preg_match_all('#\$([a-zA-Z0-9_]+)#', $s, $matches, PREG_SET_ORDER));
	{
		foreach($matches as $m)
		{
			$s = str_replace($m[0], $args[$m[1]], $s);
		}
	}
	if ($result = $dbh->query($s))
	{
		...
	}
}
...
Рейтинг: 0 / 0
19.09.2013, 19:13
    #38402025
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Строка-шаблон с подстановкой параметров
авторbind_param делает примерно тоже самое.
Недостатки: используются неименованные параметры (позиционные), привязка идет по ссылке.
вы это сами придумали или прочитали где?
...
Рейтинг: 0 / 0
19.09.2013, 19:14
    #38402028
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Строка-шаблон с подстановкой параметров
авторНе посоветуете, как улучшить такую обертку?
http://docs.doctrine-project.org/en/latest/reference/query-builder.html
...
Рейтинг: 0 / 0
19.09.2013, 19:43
    #38402058
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Строка-шаблон с подстановкой параметров
ScareCrowвы это сами придумали или прочитали где?
Я это понял из синтаксиса и примеров.
В документации нет ни одного намека на использование именованных (а не позиционных) параметров.
Напротив, аргумент types только позиционные и позволяет использовать.

ScareCrow http://docs.doctrine-project.org/en/latest/reference/query-builder.html
Помоему это совсем не то.
Это конструирование SQL-запроса в объектном стиле.
А у меня список возможных SQL-запросов фиксированный, мне только нужно подменить в них параметры на значения при вызове.
Можно конечно сделать так:
Код: php
1.
2.
3.
4.
5.
function return_sql_cmd1($arg1, $arg2) {
  $res = "select * from table where fld1 = $arg1 and fld2 = '$arg2'";
return $res}
...
mysql_query(return_sql_cmd1(1,'test'));


Но это неудобно для изменений и просмотра.
...
Рейтинг: 0 / 0
20.09.2013, 11:52
    #38402599
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Строка-шаблон с подстановкой параметров
вы mysqli_stmt с pdo не перепутали?

http://www.php.net/manual/en/pdostatement.bindparam.php
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Строка-шаблон с подстановкой параметров / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]