2011-09-02 33 views
1

您好,早上好,For Each循環不附和數據(mysql_fetch_assoc問題?)

我仍然在學習PHP由於某種原因在我的foreach循環我的腳本將不會發布任何數據。任何想法爲什麼?該emailRow回聲報了罰款,但我要刪除我的代碼如下:

<?php 

include 'includes/header.php'; 


$accountUser = array(); 
$upgradeEmail = $_GET['currEmail']; 
$emailQuery = "SELECT fbID, firstName, lastName FROM users WHERE emailOne='".$upgradeEmail."' AND authLevel=0"; 

<?php echo $emailRow['fbID']; ?> 
<?php echo $emailRow['firstName']; ?> 
<?php echo $emailRow['lastName']; ?> 

while($emailRow = mysql_fetch_assoc($emailQuery, $conn)) 
{ 
    $accountUser[]=$emailRow; 
} 
?> 
<table> 
<?php foreach($accountUser as $emailData) { ?> 


<tr><td> <?php emailData['fbID']; ?> </td><td><?php emailData['firstName']; ?></td><td><?php emailData['lastName']; ?></td></tr> 

<?php } ?> 
</table> 

回答

3

您已經構建了您的SQL查詢中$emailQuery,但從來沒有執行它。撥打mysql_query(),並將其結果資源傳遞給mysql_fetch_assoc()

$emailQuery = "SELECT fbID, firstName, lastName FROM users WHERE emailOne='".$upgradeEmail."' AND authLevel=0"; 
$result = mysql_query($emailQuery); 
if ($result) 
{ 
    while($emailRow = mysql_fetch_assoc($result, $conn)) 
    { 
    $accountUser[]=$emailRow; 
    } 
} 
else // your query failed 
{ 
    // handle the failure 
} 

同時請致電mysql_real_escape_string()$upgradeEmail以防止SQL注入你的數據庫,因爲你是從$_GET.

$upgradeEmail = mysql_real_escape_string($_GET['currEmail']); 
-1

接受它你有一個語法錯誤。你不能在現有的php標籤中打開一個新的php標籤。您必須先關閉已打開的標籤。

至於讓你在打印或呼應之前獲取數據的查詢工作,

首先...

while($emailRow = mysql_fetch_assoc($emailQuery, $conn)) 
{ 
$accountUser[]=$emailRow; 
} 

,那麼你可能寫的語句..

echo $emailRow['fbID']; etc. code. 

其次你還沒有發起過查詢,只寫了查詢語句。使用mysql_query來解僱它。

您的代碼將是這樣的..

<?php include 'includes/header.php'; 

    $accountUser = array(); 
    $upgradeEmail = $_GET['currEmail']; 
    $emailQuery = mysql_query("SELECT fbID, firstName, lastName FROM users WHERE emailOne='".$upgradeEmail."' AND authLevel=0") or die (mysql_error()); 
    while($emailRow = mysql_fetch_assoc($emailQuery, $conn)) 
    { 
     $accountUser[]=$emailRow; 
    } 

    echo $emailRow['fbID']; 
    echo $emailRow['firstName']; 
    echo $emailRow['lastName']; 
    print '<table>'; 
    foreach($accountUser as $emailData) { 
    print '<tr><td>'$.emailData['fbID'].'</td><td>'.$emailData['firstName'].'</td><td>'.$emailData['lastName'].'</td></tr>'; 
    } 
    print '</table'; 
    ?> 

隨意使用此代碼,修改它以滿足您的需求。

0

你實際上不迴應任何東西。
以及不運行查詢。
還有一些其他方法可以做事,比平常醜陋的PHP更清潔。

功能

function sqlArr($sql){ 
    $ret = array(); 
    $res = mysql_query($sql) or trigger_error(mysql_error()." ".$sql); 
    if ($res) { 
    while($row = mysql_fetch_array($res)){ 
     $ret[] = $row; 
    } 
    } 
    return $ret; 
} 

代碼

$email = mysql_real_escape_string($_GET['currEmail']); 
$data = sqlArr("SELECT * FROM users WHERE emailOne='$email' AND authLevel=0"); 
include 'template.php'; 

模板

<? include 'includes/header.php' ?> 
<table> 
<? foreach($data as $row) { ?> 
    <tr> 
    <td><?=$row['fbID']?></td> 
    <td><?=$row['firstName']?></td> 
    <td><?=$row['lastName']?></td> 
    </tr> 
<? } ?> 
</table>