从MySQL查询结果展开PHP字符串中的变量

从MySQL查询结果展开PHP字符串中的变量,php,mysql,Php,Mysql,下面的代码是它的一个小版本 我的MySQL表报告如下所示: reports rep_id rep_description rep_query varchar 3 varchar 50 varchar 50 ----------------------------------------------------------------------------- | R01 | Name search | SELECT name FROM

下面的代码是它的一个小版本

我的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注入和代码保护都已设置。问题的核心是字符串扩展

问题是$runsql将从R02中的客户运行SELECT name。 并且它不会从name='$var'的客户运行selectname,因为$var没有展开

我知道,一旦从MySQL检索到字符串,就可以使用带有substr、replace等的函数来更改字符串。我不想这样做,因为我的真实代码有很多变量

我尝试了eval和parse_str只是为了尝试,但没有成功


因此,我的问题是:是否有命令将此字符串转换为变量正确展开的字符串?

您对PHP的工作原理有一个根本性的误解,将原始PHP变量名存储在数据库记录中是错误的做法。如果必须存储这样的查询,则存储适当的预处理语句样式的查询,例如

SELECT name WHERE name = :name

然后使用适当的数据库接口库(如mysqli或PDO)来填充这些占位符。

显然不是您使用的代码,因为它充满了语法错误。粘贴精确的代码,无法调试近似值。$runsql=mysql\u result$result,0,sqlquery;缺少括号。为什么要在数据库中存储SQL查询?!SQLException?很抱歉代码为sintax。我匆忙地写了它。但你有勇气。如果你想让我花时间阅读并回答你的问题,请回报我,在提问时花时间。我有一个报告生成器。报表列表包含报表名称、查询、类型等,保存在MySQL表中。我的愿望是让这些报告为单个php生成器保存最多的信息。如果我有每个报表的SQL,我就不需要为每个报表都创建一个文件。
SELECT name WHERE name = :name