簡體   English   中英

MYSQL PHP PDO 用數據庫數據填充表

[英]MYSQL PHP PDO Fill table with database data

我想為我的數據庫中的每一行給出一個。 似乎它正在工作,但只返回第一列。

截屏 注意:數據庫中有空字段的值!

$columns = "Ticket, Last_Modified_Date, Requester";

這是我的代碼:

    function getTicket($columns){
    echo($columns);
    global $db_host, $db_name, $db_user, $db_pass;
    $db = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8", "$db_user", "$db_pass");
    $result = $db->prepare("SELECT $columns FROM tickets");
if ($result->execute()){
    echo("<b>Successfully!</b><br><br>");

    $rows = $result->fetchAll(PDO::FETCH_ASSOC);
    $col_names = explode(',', $columns);
foreach($rows as $row){
    echo("<tr>");
foreach($col_names as $col_name){
if (!isset($row[$col_name])){
    continue;
    }
    echo("<td>".$row[$col_name]."</td>");
    }
    echo("</tr>");
        }
    }
else{
    echo("<b>FAILED!</b><br><br>");
    }
    $db = null;
}

->fetch()只返回行中的一個值。

如果要返回所有結果,請使用->fetchAll()PHP 文檔)。

這里有幾個問題,首先你應該使用->fetchall()它將一次命中的所有結果行返回到一個數組中。

其次,您正在使用->fetch返回的行覆蓋 $result 語句句柄

function getTicket($columns){ 

    global $db_host, $db_name, $db_user, $db_pass;

    $db = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8", "$db_user", "$db_pass");

    $result = $db->prepare("SELECT $columns FROM tickets");

    if ($result->execute()){
        echo("<b>Successfully!</b><br><br>");

        // CHANGES HERE
        $rows = $result->fetchall(PDO::FETCH_ASSOC);

        $col_names = explode(',', $columns);  //make array of csv

        foreach($rows as $row){

            foreach( $col_names as $col_name ) {
                echo '<td>' . $row[$col_name] . '</td>';
            }
        }
    }else{
        echo("<b>FAILED!</b><br><br>");
    }
    $db = null;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM