【问题标题】:how to pass row id to query single row in php/msql如何传递行ID来查询php/mysql中的单行
【发布时间】:2018-04-12 15:08:23
【问题描述】:

我在查询我的 mysql 表以获取单行以便我可以使用 fpdf 库打印它时遇到问题。到目前为止,我可以查询和打印整个表,但我不能根据行 ID 动态打印它。这是数据表设置;

<tr>
                        <td>'.$data["cardId"].'</td>
                        <td id="surname_'.$data["cardId"].'">'.$data["surname"].', '.$data["givenName"].'</td>
                        <td id="resAddress_'.$data["cardId"].'">'.$data["resAddress"].'</td>
                        <td id="resSuburb_'.$data["cardId"].'">'.$data["resSuburb"].'</td>
                        <td id="jobTitle_'.$data["cardId"].'">'.$data["jobTitle"].'</td>
                        <td>
                            <input type="button" onclick="viewORedit('.$data["cardId"].', \'edit\')" value="Edit / View" class="btn btn-primary">
                            </td>

                            <td>
                            <form method="get" action="invoice.php">
                            <input type="submit" value="Generate" name='.$data["cardId"].' class="btn btn-success">
                            </form>
                            </td>

                            <td>
                            <input type="button" onclick="deleteRow('.$data["cardId"].')" value="Delete" class="btn btn-danger">
                        </td>
                    </tr>

我正在使用“生成”按钮来提取和生成数据。这是我的 SQL 查询和 pdf 设置;

$pdf = new PDF('P', 'mm', 'A4');


$pdf->AliasNbPages('{pages}');

$pdf->AddPage();

$pdf->SetFont('Arial', '', 9);
$pdf->SetDrawColor(50,50,100);

$id = '.$data["cardId"].';
$query=mysqli_query($connection,

               "SELECT 
                    surname, otherSurname, givenName, jobTitle
                FROM 
                    cards, employment
                WHERE 
                    cards.cardId = '$id'");
while($data=mysqli_fetch_array($query)){
    $pdf->Cell(40,5,$data['surname'], 1, 0);
    $pdf->Cell(25,5,$data['otherSurname'], 1, 0);
    $pdf->Cell(65,5,$data['givenName'], 1, 0);
    $pdf->Cell(60,5,$data['jobTitle'], 1, 1);
}

$pdf->Output();

如果我删除传递的 id,我会在 pdf 中打印所有记录。如果我添加 id,我不会得到任何结果(只有 pdf 格式)。但我想获取行 ID,这样我就可以生成该行数据的 pdf,而不是打印整个表。请帮忙。

谢谢你们。

【问题讨论】:

  • 我怀疑这行$id = '.$data["cardId"].'; 有问题你能在该行下做echo $id 看看变量是否包含任何东西吗?
  • 没错。我没有从数据表中传递正确的行 ID。当我单击“生成”按钮时,有关如何传递正确的行 ID 的任何想法?这是我在echo $id -- .$data["cardId"]..$data["cardId"]..$data["cardId"]..$data["cardId"]..$data["cardId"]..$data["cardId"]..$data["cardId"]..$data["cardId"]..$data["cardId"]..$data["cardId"]. 时得到的回复
  • 应该是$id = $data['cardId']。就像现在一样,您将 $id 设置为静态字符串。不要忘记清理输入以避免 SQL 注入,永远不要相信来自用户的数据。在公共系统中将未经检查的数据附加到查询是危险的。考虑使用 PDO 或准备好的 SQL 语句。
  • 酷!你说的对 !虽然我尝试了$id = $data['cardId'],但我现在得到一个未定义的变量错误。谢谢兄弟,我会这样做,现在只是在 POC 上工作,我对 PHP 有点陌生,哈哈
  • @Rayzor536 你得到未定义的变量,因为$data[ 'cardID' ] 不存在。该变量未在该文件中声明。您需要从 HTML 页面 POST 变量并使用 POST 引用设置 $id 变量。看到这个(stackoverflow.com/questions/2990990/…

标签: php mysql fpdf


【解决方案1】:

如果 id 是数据库中的 int 并且您使用单引号 ('') 它将返回错误 ints 不需要引号。你可以试试这样的。

"SELECT surname, otherSurname, givenName, jobTitle
FROM cards, employment
WHERE cards.cardId = ".$id."");

这个 $data["cardId"] 变量需要在 php 标签中并像这样回显。

<input type="submit" value="Generate" name="<?php echo $data["cardId"];?>" class="btn btn-success">

【讨论】:

  • 嗨@Jonny,是的.. id 是一个int.. 我把它作为cardId 包装在表中.. 我需要知道如何将我的数据库中的cardId 传递给来自数据表的查询,例如你上面提到的。
  • 你能把完整的表格和得到 $data["cardId"] 的 php 贴出来吗?
  • 是的。这是我的 ajax.php 文件,其中我的数据表是动态加载的 - 'getExistingData' 键是通过 ajax 从不同的页面调用的(工作正常)。此外,我的“查看/编辑”和“删除”按钮工作正常。只有“生成”按钮不会将 id 传递给 invoice.php 文件.. (pastebin.com/QWDXkb9Z)。这是我的 php 文件,我正在尝试以 pdf 格式打印数据 (pastebin.com/dvxv9mwe)
  • 试试上面你可能要回显 var
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多