Autor | Zpráva | ||
---|---|---|---|
Spacebar Profil |
#1 · Zasláno: 5. 4. 2010, 16:51:08 · Upravil/a: Spacebar
Zdravím.
Můj kód funguje perfektně, chci se však zeptat, zda-li by nešel zapsat lépe. Vytváří dotaz pro MySQL na základě předaných argumentů: <?php function vytvorDotaz_update($tabulka,$data,$podminky) { $d = "UPDATE ".$tabulka." "; $dataDotaz; $dataDotazDocasny; $i; foreach ($data as $dataKlic) { $dataDotazDocasny[$i] = "SET ".$dataKlic[0]."=".$dataKlic[1]; $i++; } $dataDotaz = implode(", ",$dataDotazDocasny); $d .= $dataDotaz . " "; $podminkyDotaz; $podminkyDotazDocasny; $ii; foreach ($podminky as $podminkyKlic) { $podminkyDotazDocasny[$ii] = "WHERE ".$podminkyKlic[0]."=".$podminkyKlic[1]; $ii++; } $podminkyDotaz = implode(" AND ",$podminkyDotazDocasny); $d .= $podminkyDotaz; return $d; } $c; $a; $c[0][0] = "id"; $c[0][1] = 1568786; $c[1][0] = "email"; $c[1][1] = "nekdo@nekde.com"; $a[0][0] = "expirace"; $a[0][1] = "25-02-2012"; $a[1][0] = "status"; $a[1][1] = "aktivni"; echo vytvorDotaz_update("uzivatele",$a,$c); ?> Ten kód se mi nějak nelíbí, chtěl bych jej zapsat lépe ale nevím jak. Díky za odpovědi :) Spac. |
||
Johnik Profil |
#2 · Zasláno: 5. 4. 2010, 17:22:33
Třeba tohle by šlo lépe přes for:
for ($i = 0; $i < count($podminky) - 1; $i++) { $podminkyDotazDocasny[$i] = "WHERE ".$podminky[0]."=".$podminky[1]; } nebo jeste lépe: $podminkyDotaz = ""; $podminkyDotazDocasny; = array(); foreach ($podminky as $podminkyKlic) { array_push($podminkyDotazDocasny, "WHERE ".$podminkyKlic[0]."=".$podminkyKlic[1]); } A ještě bych psal alespoň základní hodnotu ke každé nově deklarované proměnné. Protože v tomhle se vyznat - který typ proměnné nacpat do funkce... Možná je to jen síla zvyku z jazyků, kde se typ musí deklarovat, ale příjde mi to rozhodně přehlednější. |
||
larryx Profil |
#3 · Zasláno: 6. 4. 2010, 14:40:43
používam niečo podobné
function updateQ($table = NULL, $params = array(), $cond = array(), $conf = FALSE) { $sqlU = 'UPDATE '; if($table == NULL) { die('Error: First parameter -<b>Table name</b> cannot be empty for <b>updateQ</b> method'); } else { $sqlU .= $table; } if(empty($params)) { die('Error: Second parameter -<b>Params</b> cannot be empty for <b>updateQ</b> method'); } else { $sqlU .= ' SET '; $i = 1; foreach($params as $key => $value) { if($i++ == 1) { $sqlU .= '`' . $key . '`=' . addslashes($value); } else { $sqlU .= ', `' . $key . '`=' . addslashes($value); } } } if(!empty($cond)) { $i = 1; foreach($cond as $key => $value) { if($i++ == 1) { $sqlU .= ' WHERE `' . $key . '` = "' . addslashes($value) . '"'; } else { $sqlU .= ' AND `' . $key . '` = "' . addslashes($value) . '"'; } } return $sqlU; } else { if($conf == TRUE) { return $sqlU; } else { die('Warning: No condition is specified. If you wish to update all records set 4th paramater for <b>updateQ</b> method to <b>TRUE</b>'); } } } a volanie potom vyzerá echo $db->updateQ('tbl_test', array('a' => 1, 'b' => 2), array('x' => 32, 'y' => 43), FALSE); echo $db->updateQ('tbl_test', array('a' => 1, 'b' => 2), NULL, TRUE); |
||
Spacebar Profil |
#4 · Zasláno: 6. 4. 2010, 14:40:47
Díky moc :)
|
||
Časová prodleva: 14 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0