如何将文本和查询结果组合为 PHP 变量的值

Posted

技术标签:

【中文标题】如何将文本和查询结果组合为 PHP 变量的值【英文标题】:How to Combine text and query result as value of a PHP variable 【发布时间】:2018-01-11 09:11:07 【问题描述】:

我有一个变量 ($html),它分配了一些值(稍后我需要使用 MPDF 将其保存为 PDF)。它的一部分价值是通过查询数据库产生的。 现在代码看起来像......

$html = '
<html>
    <head>...</head>

    <body>
        <table>
        <thead>
        <tr>
           <td>ITEM NAME</td>
           <td>QTY</td>
           <td>PRICE</td>
           <td>TOTAL</td>
        </tr>
        </thead>

        <tbody>'.

        $items_query = "SELECT * FROM cart WHERE u_id='$u_id'"
        or die('Error Querying Database...');

        $run_items_query = mysqli_query($con, $items_query);

        while($row_query = mysqli_fetch_array($run_items_query))

            $item = $row_query['p_name'];
            $unit_price = $row_query['price'];
            $qty = $row_query['qty'];
            $price = $unit_price*$qty;

            echo'
                <tr>
                    <td>'.$item.'</td>
                    <td>'.$qty.'</td>
                    <td>'.$unit_price.'</td>
                    <td>'.$price.'</td>
                </tr>
            ';
        

        '<tr>
           <td>TOTAL:</td>
           <td>0000</td>
        </tr>
        </tbody>
        </table>
    </body>
</html>';

我在这里做的是 - 创建简单的表并通过 SQL 查询添加所有 &lt;td&gt;。我不知道如何将简单文本部分和查询结果部分连接为 $html 变量的值。 现在它只显示查询开始之前值的第一部分,然后显示这个 - 'SELECT * FROM cart WHERE u_id='ee0fivtt9tq39i5mpdhtf9v051' ...而不是它得到的&lt;td&gt;。 如果你能弄清楚我做错了什么,请告诉我......

【问题讨论】:

无法理解I can't get how to concatenate simple text part and query result part as value to the $html variable。这是什么意思?在问题中给出你需要的结果样本。 所以最后你需要在$html变量中获取html内容对吧? 谢谢...@Arun,已解决... 您意识到这是对 sql 注入开放的。如果您重视您的工作和数据库,请使用准备好的语句。我希望这不是现场直播。 【参考方案1】:

使用$html 参数将另一个字符串与. 连接起来检查答案,您正在使用的查询是SQL 注入自愿使用的,而不是我已将查询更新为参数化,这将保护您免受SQL 注入。

$html = '
<html>
<head>...</head>

<body>
    <table>
    <thead>
    <tr>
       <td>ITEM NAME</td>
       <td>QTY</td>
       <td>PRICE</td>
       <td>TOTAL</td>
    </tr>
    </thead>

    <tbody>';

    $items_query = "SELECT * FROM cart WHERE u_id=?";
    //or die('Error Querying Database...'); this don't needs to be here

    $query = $con->prepare($item_query);
    $query->bind_param('s', $u_id);
    //$run_items_query = mysqli_query($con, $items_query);
    $result = $query->execute();
    while($row_query = $result->fetch_assoc())

        $item = $row_query['p_name'];
        $unit_price = $row_query['price'];
        $qty = $row_query['qty'];
        $price = $unit_price*$qty;

        $html .='
            <tr>
                <td>'.$item.'</td>
                <td>'.$qty.'</td>
                <td>'.$unit_price.'</td>
                <td>'.$price.'</td>
            </tr>
        ';
    

    $html .= '<tr>
       <td>TOTAL:</td>
       <td>0000</td>
    </tr>
    </tbody>
    </table>
    </body>
</html>';

echo $html;

享受:-)

【讨论】:

正是我要找的……! ...非常感谢...被选为ANSWER... 如果你问我......那么,我的回答是 - 我遵循“Prateik Darji”的建议......顺便说一句,也感谢你的建议......我付钱注意SQL注入部分... 我已经使用@FunkFortyNiner 更新了查询,现在查询是安全形式的 SQL 注入。

以上是关于如何将文本和查询结果组合为 PHP 变量的值的主要内容,如果未能解决你的问题,请参考以下文章

将两个查询与计数函数组合为一个结果集

如何将 json 结果带入 PHP

如何将相同的多窗口函数组合为一个,并在查询中的任何需要的位置调用别名?

将来自同一表的单独查询组合为单独的列

如何将查询结果中的值转换为变量和变量值?

如何在执行php脚本后将mysql查询结果返回到html页面?