【发布时间】:2015-08-24 17:34:44
【问题描述】:
当我在做这个 foreach 循环时,效果很好。
<?php
function checkInDB($NIC){
$user='root';
$pass='123';
$db='mysql:host=localhost;dbname=recruit';
$dbh= new PDO($db,$user,$pass);
$sql = 'SELECT FirstName
FROM cv
JOIN candidate ON cv.cvID=candidate.cvID
WHERE ((submittedDate > NOW() - INTERVAL 365 day)
AND (candidate.NIC="906548765V"))';
echo '<h3>candidates</h3>', '<hr />', PHP_EOL;
echo '<table border=1>', PHP_EOL;
foreach ($dbh->query($sql, PDO::FETCH_ASSOC) as $row) {
echo '<tr><td>', implode('</td><td>', $row), '</td></tr>', PHP_EOL;
}
echo '</table>', PHP_EOL;
}
checkInDB("906548765V");
?>
但是当我将 (candidate.NIC="906548765V") 更改为 (candidate.NIC=$NIC)
这甚至使echo ($NIC==="906548765V"); 为真,引发意外错误
为 foreach() 提供的参数无效
那里到底发生了什么?
【问题讨论】:
-
那是因为你的字符串
$sql是用单引号构造的,单引号不解释变量(见stackoverflow.com/questions/3446216/…)