我有几个字符串存储在数据库中(是的,我知道这不是最佳实践,但我正在使用其他人设计的系统,我无法更改它。)
例如,在我的名为 specialDates 的表中,我有一个包含以下内容的 computedDate 列:
date('d', strtotime("thursday, november ".date("Y")." + 3 weeks"))
这被拉入我的代码并存储在一个名为$request['order_date']
.
这在标准 PHP 代码中使用时,返回感恩节在当年的日期。我需要将这个的评估值(今年 - 2013 年 - 值为 28)传递给另一个查询。但我似乎无法获得评估的价值。
$query = 'SELECT count(orderID) as numberOfOrders FROM customer_orders WHERE customerID = ? AND orderDate = ?';
$param = array($request['customer_id'], eval($request['order_date']));
不起作用。当我尝试将值回显到屏幕时,执行以下操作:
echo eval($request['order_date']);
或这个:
echo eval(" return \$request['order_date']; ");
只是打印出字符串的文字值(即date('d' etc.)
而不是预期的评估值。
我究竟做错了什么?
更新 我在下面尝试了 AScherer 的答案,尽管当我将值回显到屏幕时它确实有效:
echo eval(" return {$request['order_date']}; ");
当我尝试在我的数组中使用 eval 时它不起作用:
$param = array($request['customer_id'], eval("return {$request['order_date']}"));
我怎样才能让它工作,以便我在数组中传递的值是 28 的实际值,而不是字符串 pre-eval?