失踪

2011-06-07 36 views
0

变量值我已经在该数据库中的字段以下失踪

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定义的脚本的

回答

1

这听起来像你所说的是字符串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'," } 
+0

我想在我的变量EVAL在数据库中,但现在它打印eval($ myVar),而不是价值..我失去了一些东西 – Autolycus 2011-06-07 18:37:46

+0

@Autolycus看看我在答案中是如何做到的。 – Fosco 2011-06-07 18:38:49

+0

当我尝试运行时出现错误 – Autolycus 2011-06-07 18:44:09

0

我的变量值也许试试这个:

date BETWEEN {$Date1} AND {$Date2}, 

不相信它会工作,因为我看不到您的变量在脚本中的设置方式。