失蹤

2011-06-07 33 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}, 

不相信它會工作,因爲我看不到您的變量在腳本中的設置方式。