Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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 缺少变量值_Php_Cakephp 1.3 - Fatal编程技术网

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'," }