[英]How to insert an array into a single MySQL Prepared statement w/ PHP and 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.