簡體   English   中英

如何為PDO准備好的語句動態構建數組

[英]How to dynamically build an array for a PDO prepared statement

我正在使用PDO准備的查詢來搜索學生的桌子

用戶可以選擇他們希望搜索的字段-名字,姓氏,出生日期,性別或這些的任意組合。

我正在嘗試快速構建一個數組,以由准備好的語句執行。

例如,如果用戶選擇姓氏和dob,如何生成以下數組?

array(':lastname' => $lastname, ':dob' => $dob);

如果我照常添加值:

$my_array[] = "[:lastname] => $lastname";   
$my_array[] = "[:dob] => $dob";

並執行查詢:

$stmt = $db_conn->prepare($query);
$stmt->execute($my_array);

我收到一個錯誤:

警告:PDOStatement :: execute():SQLSTATE [HY093]:無效的參數編號:在第67行的C:\\ htdocs \\ pdo \\ students \\ search.php中未定義參數

感謝收到任何建議

使用字符串索引。

$dbh = new PDO("sqlite::memory:");
$stmt = $dbh->prepare("SELECT :foo, :bar");
$params = array();

// Add parameters
$params[":foo"] = 1;
$params[":bar"] = 2;

// Overwrite parameters
$params[":foo"] = 42;

// Execute
$stmt->execute($params);

例:

$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->execute(array(':calories' => $calories, ':colour' => $colour));

ex:$my_array[':calories']=>$calories

根據您的格式,它將創建如下數組。

Array
(
    [0] => :lastname => 
    [1] => :dob => 
)

因此,請如下更新格式。

$my_array=array(":lastname" => $lastname,":dob" => $dob);

暫無
暫無

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

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