2012-11-27 17 views
2

我想從特定表中獲取所有列名和值。 此表中的字段不是固定的,所以有時用戶會添加一個字段,並且它們也可以被刪除。我想要做的是檢索所有列名並獲取它的值。就我而言,現在是檢索列名並從中獲取一個值。我知道爲什麼我會得到這個結果,但我不知道如何解決這個問題。獲取for循環中的列名和值PHP

//I edited this sql, normally the table value and id are variable 
$sql = "SELECT * FROM ".$_POST['moduleName']." WHERE modItemID= ".$_POST['modItemID']; 
$query = mysql_query($sql); 
$columns = mysql_num_fields($query); 
for($i = 1; $i < $columns; $i++) { 

//read field name 
    $fieldName = mysql_field_name($query,$i); 
    while($row = mysql_fetch_assoc($query,$i)){ 
    echo $fieldName."=".$row[$fieldName]; 
    } 

} 

結果: NAAM = Ketting

+0

寫正確的查詢 –

+1

inb4'不使用mysql,使用PDO或mysqli' – NappingRabbit

+0

是你錯過了一個錯字'「' –

回答

4

mysql_fetch_assoc返回一個關聯陣列。您可以使用foreach循環來檢索數組中每個項的key =>值。

$sql = "SELECT * FROM products WHERE modItemID= 14"; 
$query = mysql_query($sql); 
$columns = mysql_num_fields($query); 
for($i = 1; $i < $columns; $i++) { 

//read field name 
    $fieldName = mysql_field_name($query,$i); 
    while($row = mysql_fetch_assoc($query,$i)){ 
    foreach($row as $column=>$value) { 
     echo "$column = $value\n"; 
    } 
    echo $fieldName."=".$row[$fieldName]; 
    } 

} 
+0

謝謝!我只是不知道我必須使用它來工作 – Tamara

+0

儘管上面的代碼爲您提供了您想要的功能,並且應該可以很好地工作,但由用戶添加/刪除了可變數量的列聽起來像是一個相當不好的主意,最好有一個表格,每個用戶可以包含多行,並且可以根據需要添加/刪除這些行。 – Kickstart

3

其實很容易解決問題的方法是使用foreach循環,就像這樣:

while($row = mysql_fetch_assoc($query)) 
{ 
    foreach($row as $key => $value) 
    { 
     echo "$key=$value"; 
    } 
} 
0

只要把你的數據庫名稱,用戶名,密碼 和表名。

,您從主數據庫中的所有數據(與列名)

<?php 

function qry($q){ 

    global $qry; 
    try { 
    $host = "?"; 
    $dbname = "?"; 
    $username = "?"; 
    $password = "?"; 
    $dbcon = new PDO("mysql:host=$host; 
    dbname=$dbname","$username","$password"); 
} 
catch (Exception $e) { 

    echo "ERROR ".$e->getMEssage(); 

} 

    $qry = $dbcon->query($q); 
    $qry->setFetchMode(PDO:: FETCH_OBJ); 

    return $qry; 

} 


echo "<table>"; 

/*Get Colums Names in table row */ 
$columns = array(); 

$qry1= qry("SHOW COLUMNS FROM Your_table_name"); 

while (@$column = $qry1->fetch()->Field) { 
    echo "<td>".$column."</td>"; 
    $columns[] = $column; 

} 

echo "<tr>"; 

/* Fetch all data into a html table * 

$qry2 = qry("SELECT * FROM Your_table_name"); 

while ($details = $qry2->fetch()) { 

    echo "<tr>"; 
    foreach ($columns as $c_name) { 
    echo "<td>".$details->$c_name."</td>"; 

} 

} 

echo "</table>"; 

?>