2017-09-29 40 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

请不要回答你不明白的问题,谢谢 –