最终代码:
1 function pdo_array_query($pdo, $table_name, $data, $fields=array('*')){ 2 //Will contain SQL snippets. 3 $rows_sql = array(); 4 //Will contain the values that we need to bind. 5 $to_bind = array(); 6 //Get a list of column names to use in the SQL statement. 7 $codition_array = array(); 8 9 $codition_string = ""; 10 11 foreach($data as $column_name => $column_value){ 12 $codition_array[] = $column_name.' = :'.$column_name; 13 $param = ":" . $column_name; 14 $to_bind[$param] = $column_value; 15 } 16 $codition_string = implode(" and ", $codition_array); 17 $fields_string = implode(", ", $fields); 18 19 $sql = "SELECT $fields_string FROM `$table_name` WHERE ".$codition_string; 20 21 //Prepare our PDO statement. 22 $pdo_statement = $pdo->prepare($sql); 23 24 foreach($to_bind as $param => $val){ 25 $pdo_statement->bindValue($param, $val); 26 } 27 // return $pdo_statement->execute(); 28 $pdo_statement->execute(); 29 $result = $pdo_statement->fetchAll(); 30 return $result; 31 //print_r($result); 32 }
用法:
$pdo = get_mysql_connect(); // 自定义 获取pdo实例的方法 $table_name = 'order'; // 表名 $fields = array("idproduct", "email", "customer", "address");// 需要查询的字段 $data = array( "idpayment"=>"1270117360-13027-963488", "name"=>"John", "age"=>"28", "sex"=>"boy", ); // 查询的条件 pdo_array_query($pdo, $table_name, $data, $fields);
拼合后的 sql 如下:
SELECT idproduct, email, customer, address FROM `order` WHERE idpayment = :idpayment and name = :name and age = :age and sex = :sex