簡體   English   中英

PHP-使用PDO將字符串數組綁定到IN()子句

[英]PHP - Binding array of strings to IN() clause using PDO

我正在努力將字符串數組綁定到MySQL語句中的IN()子句。 我已經找到了很多有關整數的信息,但是都使用了不適用於字符串的方法。


到目前為止,這是我的代碼:

$dbconnect = new PDO(...);

$brands = array('Nike', 'Adidas', 'Puma');
$i = 1;

try {
    $dbconnect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    
    $data = $dbconnect->prepare("SELECT * FROM clothing WHERE brand IN (:brands)");
    $data->bindParam(':brands', $brands);
    $data->execute();

        while($row = $data->fetch()) {
            echo $i++ . " - ". $row['brand'] . "<br>";
        }

    } catch(PDOException $er) {
        echo 'Error: ' . $er->getMessage();

}


在此先感謝您的幫助!

我喜歡遍歷並創建值的關聯數組。 然后將鍵連接到要綁定的參數字符串。 然后遍歷關聯數組,將它們綁定到准備好的語句。 以下內容(可能存在一些語法錯誤,但這是要點):

 $in_clause_array  = array();
 foreach($brands as $index => $brand) {
      $in_clause_array[':brand_'.$index] = $brand;
 } 

 //Below creates a string like ":brand_1 , :brand_2 , :brand_3"
 $in_clause_string = implode(" , ", array_keys($in_clause_array));

 $data = $dbconnect->prepare("SELECT * FROM clothing WHERE brand IN ( $in_clause_string )");

 //now bind the params to values in the associative array
 foreach($in_clause_array as $key=>$brand) {
         $data->bindValue("$key", $brand);
 }
    $array_fields = array();
    $i=0;
    $res = $db->query("yourkey ".TABLE_ADS);
    while($row = mysql_fetch_row($res)) { 
        $array_fields[$i] = $row[0];
        $i++;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM