2017-07-26 87 views
0

我在想,如果有人能帮助一些线索,为什么这PHP代码不进入for循环?在MySQL中,查询返回我需要的相应行,但在此PHP文件中,它无法将任何内容返回到数组中,因此不执行foreach循环。PHP使用fetchall()不返回行

CODE

<?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,它仍然有效。它可能是一个简单的语法错误,还是表格连接,即时通讯表演?

也为Im肯定的是,该方案正在与正确的,因为我有其他类似的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(); 
} 


?> 
+0

'error_reporting(E_ALL); 的ini_set( 'display_errors设置', '1');' – AbraCadaver

+0

...和http://php.net/manual/en/pdo.error-handling.php然后编辑您的帖子包含的错误,如果有的话。 –

+0

感谢您的评论,虽然PHP不认为这是一个错误。它只是简单地运行查询而不接收行。我不相信错误处理会查明这个 –

回答

0

与PHP脚本,我是不是该表规定的问题从中选择。这是难度比它应该是因为上面的语法返回在MySQL这是我在访问数据库中的数据,也就是工作正确的PHP脚本,可以发现如下:

工作PHP:

<?php 

try { 
$sql = 'SELECT contact.FirstName,contact.LastName '; 
$sql .= 'FROM adventureworks.employeedepartmenthistory '; 
$sql .= 'JOIN adventureworks.employee USING(EmployeeID) '; 
$sql .= 'JOIN adventureworks.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(); 
} 


?> 

我错了,该表将已通过JOIN假设在PHP中,因为它们是在MySQL。