2014-10-09 67 views
1

我有表MYTABLE包含字段:ID,PASSWORD,COL1,COL2,COL3,DATE 我想獲取並顯示HTML表中的所有記錄,但跳過ID和密碼字段... 我使用下面的代碼是不工作:PHP MySQL如何跳過顯示字段

$query = "SELECT * FROM MYTABLE WHERE 1"; 
$results = mysql_query($query, $conn) or die(mysql_error()); 
echo "<tr>"; 
while ($r = mysql_fetch_assoc($results)) { 
    foreach ($r as $item) { 
     // let's not display ID and password 
     if ($r == 'ID' || $r == 'PASSWORD') continue; // this is the line that I want to figure out 
    echo "<td>$item</td>"; 
    } // end for loop 
} // end while 
unset($item); 
echo "</tr>"; 

顯然有不止1點的方式來做到這一點,比如我可以用替換foreach循環的循環:

for ($i=0;$i<=6;$i++) { 
    if ($i == 0 || $i == 1) continue; 
    echo "<td>$r[$i]</td>"; 
} // end for 

這會跳過ID和PASSWOR D字段,但我不想使用它,因爲我在多個表上運行代碼(表名是從html select標記中提取的),並且這些表可能沒有相同數量的字段/列(但它們將始終有ID和PASSWORD)。我也可以用SQL語句(我不想),但是然後我將不得不查詢到一個臨時工,刪除ID,PASSWORD列,然後從臨時表中獲取。 (順便說一下有沒有令人信服的理由,爲什麼我其實應該與SQL Rathen市的比PHP做呢?)

+0

爲什麼你就不能使用 「從MYTABLE選擇COL1,COL2,COL3,DATE」? – Akhil 2014-10-09 12:24:23

+0

因爲他很傷心:「這會跳過ID和PASSWORD字段,但我不想使用它,因爲我在多個表上運行代碼(表名是從html選擇標記中提取的)」 – vaso123 2014-10-09 12:27:27

回答

0

試試這個:

$query = "SELECT * FROM MYTABLE WHERE 1"; 
$results = mysql_query($query, $conn) or die(mysql_error()); 
echo "<tr>"; 
while ($r = mysql_fetch_assoc($results)) { 
    foreach ($r as $key => $item) { 
     // let's not display ID and password 
     if (!in_array($key, array('PASSWORD', 'ID'))) { 
      echo "<td>$item</td>"; 
     } 
    } // end for loop 
} // end while 
echo "</tr>"; 
+0

我差點忘了in_array。非常感謝你,我要去解決這個問題。 – firewire 2014-10-09 12:45:11

+0

關鍵不是in_array,我只是用它來不做OR運算符。這一點是$ r作爲$ key => $ item。 – vaso123 2014-10-09 14:50:23

+0

哦,是的,我同意隊友,它是$ r = $ k => $ item。我只是注意到in_array的用法。再次,非常感謝您的幫助。 – firewire 2014-10-09 22:15:22

1

我會建議你做這種方式:

$query = "SELECT COL1, COL2, COL3, DATE FROM MYTABLE WHERE 1"; 
+0

感謝回答隊友,但就像我說過我不應該用SQL來做:1.真正的表格有超過24個字段/欄目2.有很多表格,他們沒有等量的字段 – firewire 2014-10-09 12:34:52

+0

對不起,我必須已經讀得很快,以爲你只想重新使用循環。幸運的是,你有更多的答案:-) – 2014-10-09 12:43:32

1
foreach ($r as $k => $item) { 
    // let's not display ID and password 
    if ($k == 'ID' || $k == 'PASSWORD') continue; 
    echo "<td>$item</td>"; 
} 

這符合正是你的要求。
我希望這個結果現在對你有用,之後,你從它演變而來。

+0

這工作。萬分感謝! – firewire 2014-10-09 12:43:55

0

讓它容易..

<?php 
$query = "SELECT COL1, COL2, COL3, DATE FROM MYTABLE WHERE ..whatever.."; 
$result = mysql_query($query); 

if ($result) { 
    while ($row = mysql_fetch_array($result)) { 
     echo "<tr>"; 
     echo "<td>".$row["COL1"]."</td>"; 
     echo "<td>".$row["COL2"]."</td>"; 
     echo "<td>".$row["COL3"]."</td>"; 
     echo "<td>".$row["DATA"]."</td>"; 
     echo "<tr>"; 
    } 
} 

?> 
+0

不能這樣做。有多個表,它們沒有相同數量的字段,也沒有相同的名稱(ID和PASSWORD除外)。感謝你的回答。 – firewire 2014-10-09 12:48:39