无法从mysql数据库中获取特定行

时间:2017-04-20 10:39:40

标签: php html mysql

这是我的第一个问题。 我正在尝试使用mpdf从我的数据库的特定行生成pdf。我希望代码在需要时下载特定行的数据。 每行旁边都有一个下载链接。按下下载按钮时,它将下载该行的数据。 代码正在运行,但它从数据库获取所有值并并行分配值。 这是我的生成pdf php

<?php

//==============================================================
//==============================================================
//==============================================================
include("mpdf/mpdf.php");
include "config.php";

$res = mysql_query("select date1, date2 from test");
if (!$res)
    die("query error : ".mysql_error());
$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first 
level of a list
// LOAD a stylesheet
$stylesheet = file_get_contents('mpdfstyletables.css');
$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is     
css/style only and no body/html/text
$html = '

<center><h3>Test</h3></center>
<center>
<table border="1">
<tr>
<th>Date 1</th><th>Date 2</th>
</tr>
<tr>';

while($row = mysql_fetch_array($res)){
$html .= 
    '<td>'.$row['date1'].'</td>
    <td>' . $row['date2']. '</td>';
}
$html .= '
</tr>
</table></center>
';
$mpdf->WriteHTML($html,2); 
$mpdf->Output('mpdf.pdf','I');
exit;
//==============================================================
//==============================================================
//==============================================================
?>

以下是查看数据库的view.php部分

<html>
<body>
<style>
   table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}

td, th {

text-align: center;
padding: 8px;
}

tr:nth-child(even) {
background-color: #dddddd;
}

  textarea
{
  width:100%;
}
.textwrapper
{
  border:1px solid #dddddd;
  margin:5px 0;
  padding:1px;
}
    </style>
<?php
mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('test')  or die(mysql_error());
$query=mysql_query("select * from test limit 0,10")  or die(mysql_error());
echo'<table border="1" ><th >Id</th><th>Date 1</th><th>Date 2</th>';
while($res=mysql_fetch_array($query))
{
  echo'<tr><td>'.$res['id'].'</td><td>'.$res['date1'].'</td>   
     <td>'.$res['date2'].'</td>
  <td><a href="gen.php?id=<?php echo $row["id"]; ?> Downlaod</a></td>
  </tr>';
}
echo'</table>';
?>
</body>
</html>

Screenshot of my view.php

1 个答案:

答案 0 :(得分:1)

在您的视图页面中

没有名为$row的数组。而$res保存查询的结果集。

请改用:

while($res=mysql_fetch_array($query)){
    echo"<tr>";
        echo "<td>$res['id']</td><td>$res['date1']</td>";
        echo "<td>$res['date2']</td>";
        echo "<td><a href=\"gen.php?id={$res['id']}\">Download</a></td>";
    echo "</tr>";
}

在pdf生成代码中,请更改:

$res = mysql_query("select date1, date2 from test");

要:

$res = mysql_query("SELECT date1,date2 FROM test WHERE id=".intval($_GET['id']));

请,请立即将mysql功能升级到mysqli_

我建议使用prepared statement来保护您的查询免遭恶意注入。在此期间,您可以使用intval()作为惰性/临时修复。