2014-07-09 98 views
0

我想從MySQL查詢中構建一個動態HTML表(不管列數或行數),但我想我可能會做錯某事,因爲它不起作用所有。使用MySQL/PHP結果構建HTML表格

我有Oracle的經驗,但我是MySQL的新手。我試圖檢查我使用的MySQL/PHP函數是否存在,我認爲是這種情況。

<?php 
$mysqli = new mysqli("localhost", "dbuser", "dbpass", "db"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

/* Select queries return a resultset */ 
if ($result = $mysqli->query("SELECT * FROM user")) { 
    /* build html table */ 
    echo "<table class='table '><thread><tr>"; 

    $ncols = mysqli_num_rows($result); 
    for ($i = 1; $i <= $ncols; $i++) { 
     $column_name = mysqli_field_name($result, $i); 
     echo "<th>".$column_name."</th>"; 
    } 

    echo "</tr></thread><tbody>"; 

    while ($row = mysqli_fetch_array($result, OCI_NUM)) { 
     echo "<tr>"; 
     for ($ii = 0; $ii < count($row); $ii++) { 
      echo "<td>" . $row[$ii] . "</td>"; 
     } 
     echo "</tr>"; 
    } 

    echo "</tbody></table>"; 

    /* free result set */ 
    $result->close(); 
} 

$mysqli->close(); 
?> 

感謝任何幫助!

史蒂夫

編輯:我添加了錯誤報告的建議,並得到:

Fatal error: Call to undefined function mysqli_field_name() in connection.php on line 20 
+0

請解釋「的說法不工作」:你得到一個錯誤信息,一個空白頁,一個混亂的HTML結果,...?即使我的PHP技能有點生疏,我可能已經提出了第一個建議:我很確定'mysqli_num_rows'實際上並沒有用你使用的查詢計算表的列數......'mysqli_field_count'似乎是你需要... –

+0

在循環中的'$ result','$ ncols',然後在'$ row'上使用'print_r'。然後你會看到你需要玩什麼數據,並可以從中發揮作用。還要添加'error_reporting(E_ALL); ini_set('display_errors',1);'到文檔的頂部以向瀏覽器顯示錯誤。讓我們知道你得到了什麼。 –

+0

我會開始修復「線程」標記:) –

回答

1

你的基本問題是,你可能從mysql_功能轉換爲mysqli這是偉大的!但是沒有功能mysqli_field_name()這個功能只是作爲mysql_函數存在。

您需要mysqli_result::fetch_fields()函數/方法mysqli來獲取字段名稱。

+0

條件語句中的變量賦值是完全有效的。 「if($ result = $ mysqli-> query(」SELECT * FROM user「))」與「$ result = $ mysqli-> query(」SELECT * FROM user「)相同; if($ result)」 –

+0

@MaciejJaśniaczyk當然,但在這種情況下沒有意義。 – TiMESPLiNTER

+0

在這種情況下我沒有看到任何錯誤。如果$ mysqli-> query將返回false,則不會執行條件語句。 –

0

這應該是一個布爾運算不是賦值

if ($result = $mysqli->query("SELECT * FROM user")) 
-1
<?php 
$link=mysql_connect("hostname","username","password","dbname"); 
$query="select * from table_name"; 
$sql=mysql_query($query,$link); 
if(count($sql)>0) 
{ 
?><tr><th></th> 
<?php 

while($row=mysql_fetch_array($sql)) 
    { ?> 
      <tr><td><?php $row['columnname']; ?> 
    <?php } }?> 
+0

'mysql_ *'函數已被棄用。不要再使用它們了! – TiMESPLiNTER

+0

對我來說很好,所以只有我回復。好的,謝謝你的反饋 – Pradeep