2017-07-26 24 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にあることをコピーし、それはまだ動作します。それは単純な構文エラーであるか、またはそれが実行しているテーブルに参加していますか?私はこの1つのように正常に動作し、他の類似した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が仮定されていました。

関連する問題