【发布时间】:2017-07-26 18:58:24
【问题描述】:
我想知道是否有人可以帮助阐明为什么这个 PHP 代码没有进入 for 循环?在 MySQL 中,查询返回我需要的适当行,但在这个 PHP 文件中,它无法将任何内容返回到数组中,因此不执行 foreach 循环。
代码
<?php
try {
$sql = 'SELECT FirstName,LastName ';
$sql .= 'FROM adventureworks.employeedepartmenthistory ';
$sql .= 'JOIN employee USING(EmployeeID) ';
$sql .= 'JOIN contact USING(ContactID) ';
$sql .= 'WHERE DepartmentID = 2';
$stmt = $dbh->prepare($sql);
$stmt->execute();
echo $sql;
echo '<ul>';
foreach ($stmt->fetchAll() as $emps){
echo "<li>" . $emps["FirstName"] . $emps["LastName"] . "</li>";
}
echo '</ul>';
$stmt = null;
}
catch (Exception $e) {
echo "Error";
echo $e->getMessage();
}
?>
我什至让程序回显 SQL 查询,然后将其复制到 MySQL 中,它仍然有效。这可能是一个简单的语法错误,还是我正在执行的表连接?
我还确定程序正在正确地联系数据库,因为我有其他类似的 PHP 文件像这个一样正常工作:
<?php
try {
$sql = 'SELECT department.Name FROM adventureworks.department';
$stmt = $dbh->prepare($sql);
$stmt->execute();
echo '<ul>';
foreach ($stmt->fetchAll() as $depts) {
echo "<li>" . $depts["Name"] . " -> (" .
"<a href='deptEmps.php?deptID=" . $depts['deptID']
. "'>Employees </a>)" . "</li>\n";
}
echo '</ul>';
$stmt = null;
}
catch (Exception $e) {
echo "Error";
echo $e->getMessage();
}
?>
【问题讨论】:
-
error_reporting(E_ALL); ini_set('display_errors', '1'); -
...和php.net/manual/en/pdo.error-handling.php 然后编辑您的帖子以包含错误(如果有)。
-
感谢您的评论,尽管 PHP 不认为这是一个错误。它只是运行查询而不接收行作为返回。我不相信错误处理会查明这一点
-
@AbraCadaver 那 ^ 我相信是给你的 ;-)
-
@DaveDiienno “我不相信错误处理会查明这一点” - 你觉得呢?我在这里看不到错误处理/检查。你在盲目地编码并且认为一切正常。