【发布时间】:2014-01-02 23:00:11
【问题描述】:
我正在使用以下查询从使用 PDO 的 mysql 数据库中选择行。
我正在使用此代码选择多行:
<?php
$contact = $pdo_conn->prepare("SELECT * from contacts WHERE company_sequence = :company_sequence AND contactstatus = :contactstatus ");
$contact->execute(array(':contactstatus' => '', ':company_sequence' => $ticket["company"]));
?>
<select name="contactsequence" id="contactsequence">
<?php foreach($contact as $contacts) {
echo '<option value="'.$contacts["sequence"].'" ';
if($ticket["contact"] == $contacts["sequence"]) {
echo 'selected="selected"';
}
echo '>'.$contacts['forename'].' '.$contacts["surname"].'</option>';
}
?>
</select>
这用于选择单行:
$stmt = $pdo_conn->prepare("select * from tickets where ticketnumber = :seq ");
$stmt->execute(array(':seq' => $_GET["seq"]));
$ticket = $stmt->fetch();
运行 PDO 选择查询的正确方法是什么? (防止sql注入等)我一直在网上找,但我只是想仔细检查一下
【问题讨论】:
-
抛开其他事情,你已经接近了,但在第一组你试图循环 STMT 语句。可能需要将该 foreach 更改为至少为 foreach ($contact->fetchAll(PDO::FETCH_ASSOC) as $contacts) { /// }。这个问题与错误有关吗?它不工作吗?
-
我可以做 $contact->fetchAll(PDO::FETCH_ASSOC) 然后将我的循环保留为 foreach($contact as $contacts) { ... }
-
我对 PDO 很陌生,所以您可能需要耐心等待。我在 2/3 天前开始学习它,哈哈 :)
-
不,::fetchAll() 的作用是返回一组结果。让它 $results = $contact->fetchAll(PDO::FETCH_ASSOC); foreach ($results as $contact) { /// }
-
在线文档中有大量示例可帮助您快速掌握。 us3.php.net/manual/en/pdostatement.fetchall.php