Mailinglisten-Archive |
Hier 3 Methoden aus einer mysql Klasse, die uns einen Haufen Arbeit abnimmt. Es reicht ein Aufruf, z.B. via mysql::('contacts', $_POST, '') oder alternativ mit mysql::('contacts', $_POST, 'contacts_id') ! Sicher, irgendwo "unschön", erst alle mysql Felder auszulesen. Aber wir finden es immer noch praktischer als alle gewünschten Felder oder gar die ganzen Queries im Skript zu hinterlegen. Ausserdem hatten wir überlegt in den Formularen schon das Array zu übergeben, z.B. <input type=text name=contacts[contacts_id]> und dann aufzurufen mit: sql::('contacts', $_POST['contacts'], ''), aber bis jetzt sind wir mit der Klasse zufrieden, denn wir mussten nichts an unserem Formularen o.ä. ändern. Was haltet ihr davon?! Danke function fetch_field_names($table) { $result = @mysql_query("SELECT * FROM " . $table . " WHERE 1 LIMIT 1"); $mysql_num_fields = @mysql_num_fields($result); for($field=0;$field<$mysql_num_fields;$field++) { $mysql_num_fields_array[] = @mysql_field_name($result, $field); } return $mysql_num_fields_array; } function query($table, $values, $where) { $sql_str = ''; $val_str = ''; // Get fields of table $table_fields = mysql::fetch_field_names('contacts'); // no fields or array found, exit if(count($table_fields) === 0 || !is_array($values)) { return false; } if(!empty($where)) { // update $where_str = "WHERE " . $where . " = " . $values[$where] . "\n"; // delete where-key from array, not needed unset($values[$where]); $sql_str .= "UPDATE " . $table . " SET"; $sql_str .= "\n(\n\t"; foreach($values as $field => $value) { if(in_array($field, $table_fields)) { $sql_str .= $field . "='" . mysql::escape_string($value) . "',"; } } // Erase final comma $sql_str = substr($sql_str, 0, -1); $sql_str .= "\n)\n"; $sql_str .= $where_str; } else { // insert $sql_str .= "INSERT INTO " . $table; $sql_str .= "\n(\n\t"; foreach($values as $field => $value) { if(in_array($field, $table_fields)) { $sql_str .= $field . ","; $val_str .= "'" . mysql::escape_string($value) . "',"; } } // Erase final comma $sql_str = substr($sql_str, 0, -1); $val_str = substr($val_str, 0, -1); $sql_str .= "\n)\n"; $sql_str .= "VALUES"; $sql_str .= "\n(\n"; $sql_str .= "\t" . $val_str; $sql_str .= "\n)\n"; } return $sql_str; } function escape_string($str) { if(!empty($str)) { return mysql_real_escape_string($str); } }
php::bar PHP Wiki - Listenarchive