2017-07-26 119 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。