ถ้าฉันทำสิ่งนี้:
$p = 10;
$n = 3;
$evalstr = "\$f = 0.99 + ((.025 * \$p) * \$n);";
eval($evalstr);
echo $f;
ฉันได้รับการแสดง 1.74 ไม่มีข้อผิดพลาดทุกอย่างเรียบร้อยดี แต่เมื่อฉันมีตาราง mysql ที่เก็บสมการเหล่านี้ (สำหรับจุดประสงค์ของตัวอย่างนี้ มันเป็นสมการเดียวกันทุกประการ)...เช่นนั้น:
$p = 10;
$n = 3;
while ($result = mysql_fetch_assoc($results)) {
$math = $result['math'];
//at this point $math = "\$f = 0.99 + ((.025 * \$p) * \$n);"
eval($math);
}
ฉันได้รับข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์ T_VARIABLE ที่ไม่คาดคิด คาดหวัง T_STRING ใน ajax\getprices.php(30) : รหัส eval()'d ในบรรทัด 1
ไม่แน่ใจว่าทำไมถ้าฉันพิมพ์ echo $math มันเหมือนกับสิ่งที่ฉันมีเป็น $evalstr ในตัวอย่างแรกหรือไม่ จริงๆ แล้ว $p และ $n ถูกตั้งค่าจากตัวแปร GET แต่แม้ว่าฉันจะตั้งค่าด้วยตนเองเหมือนในตัวอย่าง มันก็ไม่ทำงาน
eval()
ด้วยvar_dump($math)
และแจ้งให้เราทราบให้ชัดเจนว่ามันพิมพ์อะไรออกมา - person Ilmari Karonen   schedule 19.10.2011