失踪
问题描述:
变量值我已经在该数据库中的字段以下失踪
id = id,
Xterminal = 1234,
Testdata = 1234',
date BETWEEN $Date1 AND $Date2,
MyVar = $myVar;
我想在我的SQL语句中使用它。我有$ Date1 ='2011-01-09'和$ Date2 ='2011-03-09'设置在我的脚本上面的SQL语句。 我有$ myvar安装到$ myVar = 3。但它不转换变量在SQL中,当我做$ print_r上$ sql它显示变量,甚至在查询中显示变量不是它们的值
我在做下面
$conditions = explode(',',$results['conditions']);
的print_r($ condidtions)给出
阵列 ( [0] => ID = ID [1] => X终端= 1234 [2] => Testdata = 1234 [3] => 日期BETWEEN $ Date1 AND $ Date2 [3] => MyVar = $ myVar;
)
$sql1 = "Select * from table where ";
$sql2 = implode(' AND ',$conditions);
$sql = $Sql1.' '.$sql2;
的print_r( “$ SQL”)给出
选择 * FROM
表 WHERE ID = ID和 X终端= 1234和 TESTDATA = 1234 AND date date $ date1 AND $ date2 AND MyVar = $ myVar;
不知道为什么不考虑我已经alreadt定义的脚本的
答
这听起来像你所说的是字符串date BETWEEN $Date1 AND $Date2,
来自数据库。如果是这样的话,那么你的变量没有被评估,因为这只是数据...
你可以使用eval(),但如果用户可能创建这些条件,这是一个危险的路径。
$conditions = explode(',',$results['conditions']);
for ($x = 0; $x < count($conditions); $x++) {
eval("\$conditions[\$x] = \"" . $conditions[$x] . "\";");
}
print_r($conditions);
编辑:我放在一起为此工作PHP样品,在http://gfosco.kodingen.com/conditions.php可见,这里是源:
<?php
$conditions = array("date BETWEEN '\$Date1' AND '\$Date2',");
echo "\$conditions before the loop: <BR>";
var_dump($conditions);
$Date1 = '1/1/2011';
$Date2 = '12/31/2011';
echo "<BR>\$Date1 = " . $Date1 . "<BR>";
echo "\$Date2 = " . $Date2 . "<BR>";
for ($x = 0; $x < count($conditions); $x++) {
eval("\$conditions[\$x] = \"" . $conditions[$x] . "\";");
}
echo "<BR>\$conditions after the loop:<BR>";
var_dump($conditions);
此输出:
$conditions before the loop:
array(1) { [0]=> string(35) "date BETWEEN '$Date1' AND '$Date2'," }
$Date1 = 1/1/2011
$Date2 = 12/31/2011
$conditions after the loop:
array(1) { [0]=> string(41) "date BETWEEN '1/1/2011' AND '12/31/2011'," }
答
我的变量值也许试试这个:
date BETWEEN {$Date1} AND {$Date2},
不相信它会工作,因为我看不到您的变量在脚本中的设置方式。
我想在我的变量EVAL在数据库中,但现在它打印eval($ myVar),而不是价值..我失去了一些东西 – Autolycus 2011-06-07 18:37:46
@Autolycus看看我在答案中是如何做到的。 – Fosco 2011-06-07 18:38:49
当我尝试运行时出现错误 – Autolycus 2011-06-07 18:44:09