Php 如何为PDO准备的语句动态构建数组

Php 如何为PDO准备的语句动态构建数组,php,pdo,Php,Pdo,我使用PDO准备的查询来搜索学生的表 用户可以选择他们希望搜索的字段-名字、姓氏、出生日期、性别或这些字段的任意组合 我正在尝试动态构建一个数组,由准备好的语句执行 e、 g.如果用户选择lastname和dob,如何生成以下数组 array(':lastname' => $lastname, ':dob' => $dob); 如果我按照常规添加值: $my_array[] = "[:lastname] => $lastname"; $my_array[] = "[:d

我使用PDO准备的查询来搜索学生的表

用户可以选择他们希望搜索的字段-名字、姓氏、出生日期、性别或这些字段的任意组合

我正在尝试动态构建一个数组,由准备好的语句执行

e、 g.如果用户选择lastname和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]:参数无效 编号:未在C:\htdocs\pdo\students\search.php中定义参数 第67行

感激地收到的任何建议

示例:

$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);
使用字符串索引

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

显示
$query
以及尝试
$my_数组[':lastname']=$lastname
$my_数组[':dob']=$dob托尼,你的钱是对的-非常感谢!我还没有掌握php中的数组。请不要回答您不理解的问题,谢谢