phpbar.de logo

Mailinglisten-Archive

[php] kleine mysql klasse

[php] kleine mysql klasse

Michael Borchers list at tridemail.de
Mon Feb 26 13:15:22 CET 2007


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