2017-09-29 39 views
0

我使用PDO的陣列來製作查詢來搜索一個學生的表如何動態地建立一個PDO準備語句

用戶可以選擇哪些領域/ s的他們想要搜索 - 名字,姓氏,出生日期,性別或這些的任何組合。

我想建立一個數組,即將執行的準備語句。

例如如果用戶選擇lastname和dob,我該如何生成以下數組?

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

如果我添加值按通常:

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

並執行查詢:

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

我得到一個錯誤:

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\htdocs\pdo\students\search.php on line 67

任何建議感激收到

+0

顯示'$ query'以及 –

+0

嘗試'$ my_array [ ':名字'] = $姓氏;'和'$ my_array [ ':DOB'] = $ DOB;' – Tony

+0

[如何創建爲更新查詢準備語句](https://phpdelusions.net/pdo_examples/dynamical_update) –

回答

-2

例如:

$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); 
+1

請不要回答你不明白的問題,謝謝 –