亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確使用PDO對象進行參數化SELECT查詢

如何正確使用PDO對象進行參數化SELECT查詢

慕少森 2019-09-21 11:00:44
我已經嘗試按照PHP.net說明進行SELECT查詢,但是我不確定執行此操作的最佳方法。SELECT如果可能,我想使用參數化查詢來返回ID表中name字段與參數匹配的表。這將返回一個,ID因為它將是唯一的。然后,我想將其ID用于INSERT另一個表中,因此我將需要確定它是否成功。我還讀到您可以準備查詢以供重用,但是我不確定這有什么幫助。
查看完整描述

3 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

我最近一直在與PDO合作,上面的答案是完全正確的,但是我只是想證明以下內容也可以工作。


$nametosearch = "Tobias";

$conn = new PDO("server", "username", "password");

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sth = $conn->prepare("SELECT `id` from `tablename` WHERE `name` = :name");

$sth->bindParam(':name', $nametosearch);

// Or sth->bindParam(':name', $_POST['namefromform']); depending on application

$sth->execute();


查看完整回答
反對 回復 2019-09-21
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

您可以使用bindParam或bindValue方法來幫助準備您的陳述。它使事情看起來一目了然,而不是一目了然,$check->execute(array(':name' => $name));尤其是當您綁定多個值/變量時。


檢查以下清晰易讀的示例:


$q = $db->prepare("SELECT id FROM table WHERE forename = :forename and surname = :surname LIMIT 1");

$q->bindValue(':forename', 'Joe');

$q->bindValue(':surname',  'Bloggs');

$q->execute();


if ($q->rowCount() > 0){

    $check = $q->fetch(PDO::FETCH_ASSOC);

    $row_id = $check['id'];

    // do something

}

如果您期望多行,請刪除LIMIT 1并將fetch方法更改為fetchAll:


$q = $db->prepare("SELECT id FROM table WHERE forename = :forename and surname = :surname");// removed limit 1

$q->bindValue(':forename', 'Joe');

$q->bindValue(':surname',  'Bloggs');

$q->execute();


if ($q->rowCount() > 0){

    $check = $q->fetchAll(PDO::FETCH_ASSOC);

    //$check will now hold an array of returned rows. 

    //let's say we need the second result, i.e. index of 1

    $row_id = $check[1]['id']; 

    // do something

}


查看完整回答
反對 回復 2019-09-21
  • 3 回答
  • 0 關注
  • 813 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號