データベースにいくつかの文字列が保存されています(はい、それがベストプラクティスではないことはわかっていますが、他の誰かが設計したシステムで作業しているため、変更できません)。
たとえば、specialDatesというテーブルには、次の内容を含むcalculatedDate列があります。
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になるように、これを機能させるにはどうすればよいですか?