duaner1634 2017-04-20 10:39
浏览 30
已采纳

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

this is my first question here. I am trying to generate pdf from a particular row of my database using mpdf. I want the code to download a particular row's data when needed. A download link is beside every row. When the download button is pressed it will download that row's data. The code is working but it is fetching all the values from the db and assigning the values side by side. Here is my generate 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;
//==============================================================
//==============================================================
//==============================================================
?>

And Here is the view.php part for viewing the database

<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条回答 默认 最新

  • dongqing8765 2017-04-28 11:09
    关注

    In your view page,

    There is no array called $row. Rather $res holds your query's resultset.

    Use this instead:

    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>";
    }
    

    In you pdf generating code, change:

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

    To:

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

    Please, please, please upgrade your mysql functions to mysqli_ immediately.

    I recommend using a prepared statement to protect your query from malicious injection. In the meantime, you can use intval() as a lazy/temporary fix.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类