找到了mysqli的答案:
public function get_result($sql,$types = null,$params = null) { # create a prepared statement $stmt = $this->mysqli->prepare($sql); # bind parameters for markers # but this is not dynamic enough... //$stmt->bind_param("s", $parameter); if($types&&$params) { $bind_names[] = $types; for ($i=0; $i<count($params);$i++) { $bind_name = 'bind' . $i; $$bind_name = $params[$i]; $bind_names[] = &$$bind_name; } $return = call_user_func_array(array($stmt,'bind_param'),$bind_names); } # execute query $stmt->execute(); # these lines of pre below return one dimentional array, similar to mysqli::fetch_assoc() $meta = $stmt->result_metadata(); while ($field = $meta->fetch_field()) { $var = $field->name; $$var = null; $parameters[$field->name] = &$$var; } call_user_func_array(array($stmt, 'bind_result'), $parameters); while($stmt->fetch()) { return $parameters; //print_r($parameters); } # the commented lines below will return values but not arrays # bind result variables //$stmt->bind_result($id); # fetch value //$stmt->fetch(); # return the value //return $id; # close statement $stmt->close(); }然后:
$mysqli = new database(DB_HOST,DB_USER,DB_PASS,DB_NAME);$output = new search($mysqli);$sql = "SELECt *FROM root_contacts_cfmORDER BY cnt_id DESC";print_r($output->get_result($sql));$sql = "SELECt *FROM root_contacts_cfmWHERe root_contacts_cfm.cnt_id = ?ORDER BY cnt_id DESC";print_r($output->get_result($sql,'s',array('1')));$sql = "SELECt *FROM root_contacts_cfmWHERe root_contacts_cfm.cnt_id = ?AND root_contacts_cfm.cnt_firstname = ?ORDER BY cnt_id DESC";print_r($output->get_result($sql, 'ss',array('1','Tk')));mysqli非常la脚。我想我应该迁移到PDO!



