如何使用预准备语句绑定变量

时间:2013-01-06 07:38:42

标签: php pdo prepared-statement

我在html中有一个表,用户可以在其中单击一行,并将该行的data-attribute传递给在屏幕上加载的PHP文件。我希望这个PHP文件包含一些与传递的变量相关的数据。

例如,这里是定义变量的简单jQuery:

$(document).on('click', 'tr', function() {
    var id = $(this).attr("data-recordId");
    $('#section2').load('data_entry_form.php?id='+id);
});

这是PHP用于使用id变量并获取关联元素(根据SQL查询),其中id为= fee_source_id。 PHP有什么问题?它不起作用。我想简单地回显/显示条件fee_source_id = :id为真的SQL查询的结果。

<html>
<form>
<?php

require_once 'config.php';

$dbh = new PDO($dsn, $dbuser, $dbpass);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$id = $_GET['id'];

$sth = $dbh->prepare('
    SELECT a_aif.aif_id,
      a_aif.fee_source_id,
      a_aif.company_name_per_sedar,
      a_aif.document_filing_date
    FROM  a_aif
    WHERE a_aif.fee_source_id = :id');
$sth->bindParam(':id', $id, PDO::PARAM_STR);
$sth->execute();

?>
</form>
</html>

1 个答案:

答案 0 :(得分:0)

您需要fetch结果集的行。然后回显你需要的字段。

如果您使用$.getJSON而不是$('#section2'),这可能会有所帮助。如果您要返回数组,请加载

$sth = $dbh->prepare('
        SELECT a_aif.aif_id,
          a_aif.fee_source_id,
          a_aif.company_name_per_sedar,
          a_aif.document_filing_date
        FROM  a_aif
        WHERE a_aif.fee_source_id = :id');
    $sth->bindParam(':id', $id, PDO::PARAM_STR);
    $sth->setFetchMode(PDO::FETCH_ASSOC);
    $sth->execute();
    $row  = $sth-> fetch(); // returns 1 row
    //$data[] = $row; Returns all of array 
    //$id = $row['id'];// Returns indivadual fiels in array

    echo $data;