Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL语句从表中获取,语句中有变量,无法执行_Php_Mysql_Eval - Fatal编程技术网

Php SQL语句从表中获取,语句中有变量,无法执行

Php SQL语句从表中获取,语句中有变量,无法执行,php,mysql,eval,Php,Mysql,Eval,我有一个表,保存了一些sql语句 例如: value:`select * from table where aa='".$test."'` <?php $test="bbb"; $strsql=$row["sql"]; echo $strsql; //result is :select * from table where aa='".$test."' ?> 但我想:从aa='bbb'所在的表中选择* 帮帮我 谢谢 您可以使用

我有一个表,保存了一些sql语句

例如:

value:`select * from table where aa='".$test."'`

 <?php
      $test="bbb";
      $strsql=$row["sql"]; 
      echo $strsql;
      //result is :select * from table where aa='".$test."'
 ?>
但我想:从aa='bbb'所在的表中选择*

帮帮我 谢谢

您可以使用:作为PHP代码计算字符串

$test = "bbb";
$strsql = 'select * from table where aa=\'".$test."\''; // as $row["sql"];
eval("\$strsql = \"$strsql\";");
echo $strsql;

你应该使用像这样的分解函数

$test="bbb";
$data=explode("=",$strsql);
$new_query=$data[0]."='$test'"
你们可以使用eval函数,但我想你们是新的程序员,eval函数是非常危险的

根据PHP手册

注意:eval语言结构非常危险,因为它 允许执行任意PHP代码。因此,不鼓励使用它。 如果您已仔细核实,除了 使用此结构时,请特别注意不要通过任何用户 在未事先正确验证的情况下向其提供数据


为什么要使用爆炸?而不是评估?我相信它可以在没有爆炸的情况下完成,eval更优雅…@DavidWinder我同意你的看法。我认为james是新的程序员,我知道eval非常危险,我认为只有好的程序员才应该使用这个函数。根据php手册的警告,eval语言结构非常危险,因为它允许执行任意php代码。因此,不鼓励使用它。如果您已经仔细验证了除了使用此构造之外没有其他选择,请特别注意,在未事先正确验证的情况下,不要将任何用户提供的数据传递到该构造中。注意使用eval,特别是在接受未知数据时,因为它对各种注射都是开放的。请添加更多细节和/或给出更多示例来解释您的问题。