如何将文本和查询结果合并为 PHP 变量的值
How to Combine text and query result as value of a PHP variable
我有一个变量($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>';
我在这里做的是 - 创建简单的 table 并通过 SQL 查询添加所有 <td>
。我不知道如何将简单文本部分和查询结果部分作为值连接到 $html 变量。
现在它只显示查询开始前值的第一部分,然后显示这个 - 'SELECT * FROM cart WHERE u_id='ee0fivtt9tq39i5mpdhtf9v051' ... 而不是 <td>
它得到。
如果您能弄清楚我做错了什么,请告诉我...
使用 $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;
享受:-)
我有一个变量($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>';
我在这里做的是 - 创建简单的 table 并通过 SQL 查询添加所有 <td>
。我不知道如何将简单文本部分和查询结果部分作为值连接到 $html 变量。
现在它只显示查询开始前值的第一部分,然后显示这个 - 'SELECT * FROM cart WHERE u_id='ee0fivtt9tq39i5mpdhtf9v051' ... 而不是 <td>
它得到。
如果您能弄清楚我做错了什么,请告诉我...
使用 $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;
享受:-)