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