使用mysqli和php

时间:2016-05-26 19:35:22

标签: php html mysqli

我正在尝试使用mysqli和php从表中获取列名和数据。任何帮助表示赞赏。

我知道如何通过或多或少的代码在java中执行此操作:

    String [] header= new String[numberOfColumns-1];

//Code to get column names in header array

String table = "<table><tr>"

for(int i=0;i<numberOfColumns-1;i++){
    table= table + "<td>" + header[i] + </td>;
}
table = table + </tr>;
while(result.next()!=null){
    table = table + <tr>
    for (int j = 0 ; j < numberOfColumns-1 ; j++){
        table = table + <td> + result.getString[j] + </td>
    }
    table = table + </tr>
}

但我不知道如何在PHP中做到这一点。每个表都不同,但我对一个表的要求很远:

include("config.php");
    session_start();

    $sql = ($_POST['q']);
    $result = mysqli_query($db,$sql);


    echo "<tr>";
    echo "<td>First Name</td>";
    echo "<td>Last Name</td>";
    echo "<td>Date of Birth</td>";
    echo "<td>Contact Details</td>";
    echo "</tr>";

    while($rowitem = mysqli_fetch_array($result,MYSQLI_ASSOC)){
        echo "<tr>";
        echo "<td>" . $rowitem['fname'] . "</td>";
        echo "<td>" . $rowitem['lname'] . "</td>";
        echo "<td>" . $rowitem['dob'] . "</td>";
        echo "<td>" . $rowitem['contact'] . "</td>";*/
        echo "</tr>";
    }
    echo "</table>"; //end table tag

编辑:fetch_fields的实现是否正确?

include("config.php");
    session_start();

    $sql = ($_POST['q']);
    $result = mysqli_query($db,$sql);

    $finfo = mysqli_fetch_fields($result);
    echo "<tr>";
    foreach ($finfo as $val) {
        echo "<td>" . $val->name . "</td>"
    } 
    echo "</tr>";
    while($rowitem = mysqli_fetch_array($result,MYSQLI_ASSOC)){
        echo "<tr>";
        for($x =0; $x < count($finfo);$x++){
            echo "<td>" . $rowitem[$x] . "/td";
        }
        echo "</tr>";
    }
    echo "</table>";

编辑2:数据库连接.php

<<?php

    include("config.php");
    session_start();

    $sql = ($_GET['q']);

    $result = mysqli_query($db,$sql);
    echo "<table border='1' class='table_info'>";
    $finfo = mysqli_fetch_fields($result);
    echo "<tr>";
    foreach ($finfo as $val) {
        echo "<td>" . $val->name . "</td>";
    } 
    echo "</tr>";
    while($rowitem = mysqli_fetch_array($result,MYSQLI_ASSOC)){
        echo "<tr>";
        foreach ($row as $value) { (line 18)
            echo "<td>" . $value . "</td>"; 
        }
        echo "</tr>";
    }
    echo "</table>"; //end table tag

   ?>

错误: 注意:未定义的变量:第18行的databaseConnection.php中的行

警告:在第18行的databaseConnection.php中为foreach()提供的参数无效

4 个答案:

答案 0 :(得分:0)

您可以在PlatformType.WindowsMobile对象上调用mysqli_fetch_fields,并为返回的数组中的每个对象检索$result属性。有关示例,请参阅documentation

答案 1 :(得分:0)

有几种方法可以做到这一点:

  1. 使用array_keys()从关联数组中获取键的名称:

    $rowitem = mysqli_fetch_array($result, MYSQLI_ASSOC);
    $header = array_keys($rowitem);
    
  2. 使用mysqli_fetch_fields()抓取字段对象,并使用array_map()将名称解析为数组:

    // Helper function to use in array_map
    // (For PHP < 5.3. If >= 5.3.0, use the second version)
    function getFieldName($field) { return $field->name; }
    
    // For PHP < 5.3:
    $header = array_map("getFieldName", mysqli_fetch_fields($result));
    
    // For PHP >= 5.3.0:
    $header = array_map(function($o) { return $o->name; }, mysqli_fetch_fields($result));
    

答案 2 :(得分:0)

如上所述,您可以使用$ result-&gt; fetch_fields()从结果中获取字段信息,这包括每个字段的名称。

对于您尝试实现的目标,此代码应该适用于任何表/查询:

<?php

/* Connect to mysql */    
$mysqli = new mysqli("localhost", "username", "password", "database");

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

/* Your query */
$query = "SELECT * from table";

if ($result = $mysqli->query($query)) {

    /* Output HTML table */
    echo "<table border='1'>";

    /* Get field information for all returned columns */
    $finfo = $result->fetch_fields();

    /* Output each column name in first table row */
    echo "<tr>";
    foreach ($finfo as $val) {
        echo "<td>".$val->name."</td>";
    }
    echo "</tr>";

    /* Fetch the result and output each row into a table row */
    while($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
        echo "<tr>";
        foreach ($row as $value) {
            echo "<td>" . $value . "</td>";
        }
        echo "</tr>";
    }

    $result->free();

    echo "</table>";

}
$mysqli->close();

(显然你不应该从$ _POST变量查询数据库而不对输入进行严重的消毒,但我认为这只是为了你的方便。)

答案 3 :(得分:0)

你可以在桌子上回声..

$result = mysqli_query($db,$sql)
 if (!$result) {
   die("Query to show fields from table failed");
}

$fields_num = mysqli_num_fields($result);

echo "<table border='1'><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysqli_fetch_field($result);
echo "<td>{$field->name}</td>";
}
echo "</tr>\n";
// printing table rows
while($row = mysqli_fetch_row($result))
{
echo "<tr>";

// $row is array... foreach( .. ) puts every element
// of $row to $cell variable
   foreach($row as $cell)
       echo "<td>$cell</td>";
   echo "</tr>\n";
}
mysqli_free_result($result);`