sql >> Database teknologi >  >> RDS >> Mysql

Indsæt/opdater hjælpefunktion ved hjælp af PDO

Jeg har normalt en klasse, der udvider PDO, men min klasse er ret tilpasset. Hvis jeg får det ryddet op og testet, vil jeg poste det på et senere tidspunkt. Her er dog en løsning til dit system.

function dbSet($fields, &$values) {
    $set = '';
    $values = array();

    foreach ($fields as $field) {
        if (isset($_POST[$field])) {
            $set .= "`$field` = ?,";
            $values[] = $_POST[$field];
        }
    }

    return rtrim($set, ',');
}

$fields = explode(" ","name surname lastname address zip fax phone date");
$_POST['date'] = $_POST['y']."-".$_POST['m']."-"$_POST['d'];

$query  = "UPDATE $table SET ".dbSet($fields, $values).", stamp=NOW() WHERE id=?";
$values[] = $id;

$dbh->prepare($query);
$dbh->execute($values);  

Dette er muligvis ikke perfekt og kunne bruge tweaking. Det tager højde for, at $dbh er opsat med en PDO-forbindelse. Afventende mindre syntaksproblemer, jeg lavede, burde det virke.

REDIGER

Men jeg tror faktisk, at jeg ville gå efter Doctrin ORM (eller en anden ORM). Når du opsætter modellen og tilføjer al valideringen der, så er det så enkelt som:

$table = new Table();
$table->fromArray($_POST);
$table->save();

Det skulle nemt udfylde indholdet. Dette er selvfølgelig med en ORM, som Doctrine.

OPDATERET

Foretog nogle mindre justeringer af den første kode, såsom at sætte isset tilbage og ved hjælp af rtrim over substr . At gå i gang med at levere en mock-up af en PDO-udvidelsesklasse skal bare layoute måden at gøre det på og lave nogle enhedstests for at sikre, at det virker.



  1. Oracle erklæring

  2. Oracle Date - Sådan tilføjer du år til dato

  3. JSON_VALUE() Funktion i Oracle

  4. Sådan fungerer UNCOMPRESSED_LENGTH() i MariaDB