Php 缺少变量值
我在数据库字段中有以下内容Php 缺少变量值,php,cakephp-1.3,Php,Cakephp 1.3,我在数据库字段中有以下内容 id = id, Xterminal = 1234, Testdata = 1234', date BETWEEN $Date1 AND $Date2, MyVar = $myVar; 我想在sql语句中使用它。我在sql语句上方的脚本中设置了$Date1='2011-01-09'和$Date2='2011-03-09'。 我将$myvar设置为$myvar=3。但它不会在sql中转换变量,当我在$sql上打印时,它会显示变量,甚至在查询中,它也会显示变量,而不是
id = id,
Xterminal = 1234,
Testdata = 1234',
date BETWEEN $Date1 AND $Date2,
MyVar = $myVar;
我想在sql语句中使用它。我在sql语句上方的脚本中设置了$Date1='2011-01-09'和$Date2='2011-03-09'。
我将$myvar设置为$myvar=3。但它不会在sql中转换变量,当我在$sql上打印时,它会显示变量,甚至在查询中,它也会显示变量,而不是它们的值
我正在做以下工作
$conditions = explode(',',$results['conditions']);
打印($conditions)给出
排列
(
[0] =>
id=id
[1] =>
Xterminal=1234
[2] =>
Testdata=1234
[3] =>
日期介于$Date1和$Date2之间
[3] =>
MyVar=$MyVar
)
打印($sql)给出
挑选
*
从
桌子
哪里
id=id和
Xterminal=1234和
Testdata=1234和
日期介于$Date1和$Date2之间,并且
MyVar=$MyVar
不确定为什么不采用我在脚本的to处定义的alreadt变量值可以尝试以下方法:
date BETWEEN {$Date1} AND {$Date2},
因为我看不到脚本中变量的设置方式,所以不确定它是否能工作。听起来像是说$Date1和$Date2之间的字符串
date,
来自数据库。如果是这样的话,那么你的变量就不会被计算,因为这只是数据
您可以使用eval(),但如果用户可能创建这些条件,则这是一条危险的路径
$conditions = explode(',',$results['conditions']);
for ($x = 0; $x < count($conditions); $x++) {
eval("\$conditions[\$x] = \"" . $conditions[$x] . "\";");
}
print_r($conditions);
我试着对数据库中的变量求值,但现在它打印的是求值($myVar),而不是值..我丢失了吗something@Autolycus我整理了一个可用的PHP示例,我所做的唯一更改是在日期变量周围加上单引号,否则它们在SQL查询中无效。
$conditions = explode(',',$results['conditions']);
for ($x = 0; $x < count($conditions); $x++) {
eval("\$conditions[\$x] = \"" . $conditions[$x] . "\";");
}
print_r($conditions);
<?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'," }