Код ниже - крошечная версия.Расширение переменных в строке для PHP из результата запроса MySQL
Моя MySQL таблица "отчеты" выглядит следующим образом:
reports rep_id rep_description rep_query varchar 3 varchar 50 varchar 50 ----------------------------------------------------------------------------- | R01 | Name search | SELECT name FROM customers WHERE name='$var' | ----------------------------------------------------------------------------- | R02 | All names | SELECT name FROM customers | -----------------------------------------------------------------------------
Один report_list.php генерирует список доступных отчетов. Если в отчете есть «поле поиска», оно помещается в html-форму. Для R01 мы будем иметь это:
<h3>R01</h3>`
<form action="generator.php" method=post>
<input type="text" name="var" >Search String
<input type="hidden" name="rep" value='R01'>
<input type="submit"></form>
Это "generator.php". Имейте в виду, что все инъекции MySQL и защита кода были размещены. Ядро проблемы - это просто расширение строки.
<?php
$var=$_REQUEST['var'];
$rep=$_REQUEST['rep'];
mysql_connect(******,*****,******,false,65536);
@mysql_select_db(*******) or die("Unable to select database");
$query="SELECT rep_query FROM reports WHERE rep_id='$rep'";
$result=mysql_query($query);
$runsql=mysql_result($result,0,'rep_query');
//Now run the query you just got from querying the MySQL
$runthatquery=mysql_query($runsql);
// Here it should run "SELECT name FROM customers WHERE name='$var'"
.
.
// I removed the code that print the query results
?>
Проблема заключается в том, что $ runsql ЗАПУСКАЕТСЯ "ВЫБОР имя от клиентов" от R02. И это НЕ ЗАПУСКАЕТ "SELECT name FROM customers WHERE name = '$ var'" - Потому что $ var не расширяется.
Я знаю, что можно использовать функцию с substr, replace (и т. Д.), Чтобы изменить строку после ее получения из MySQL. Я не хочу этого делать, потому что у моего кода реальной жизни много переменных.
Я пробовал eval и parse_str (просто попробовать) без успеха.
Следовательно, мой вопрос: есть ли команда для преобразования этой строки в строку с правильным расширением переменных?
явно не тот код, который используется в качестве его синтаксических ошибок. вставьте * точный * код, не можете отлаживать приближение. –
$ runql = mysql_result $ result, 0, sqlquery); отсутствует скобка. – Mihai
Почему вы храните SQL-запросы в базе данных ?! SQLception? – deceze