Sto creando un modulo a più fasi per i miei utenti. Saranno autorizzati ad aggiornare uno o tutti i campi. Quindi, ho bisogno di inviare i valori, controllare se sono impostati e in tal caso, eseguire un UPDATE
. Ecco quello che ho finora:AGGIORNA un array usando PDO
public function updateUser($firstName, $lastName, $streetAddress, $city, $state, $zip, $emailAddress, $industry, $password, $public = 1,
$phone1, $phone2, $website,){
$updates = array(
'firstName' => $firstName,
'lastName' => $lastName,
'streetAddress' => $streetAddress,
'city' => $city,
'state' => $state,
'zip' => $zip,
'emailAddress' => $emailAddress,
'industry' => $industry,
'password' => $password,
'public' => $public,
'phone1' => $phone1,
'phone2' => $phone2,
'website' => $website,
);
Ecco il mio DOP (o meglio, il tentativo di iniziare)
$sth = $this->dbh->prepare("UPDATE user SET firstName = "); //<---Stuck here
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
return $result;
In sostanza, come posso creare l'istruzione UPDATE
quindi aggiorna solo le voci del array che non sono NULL
?
ho pensato sull'esecuzione di un ciclo foreach
come questo:
foreach($updates as $key => $value) {
if($value == NULL) {
unset($updates[$key]);
}
}
ma come faccio a scrivere la dichiarazione prepare
se io sono sicuro di valori?
Se sto sbagliando completamente, per favore indicami la giusta direzione. Grazie.
È possibile utilizzare 'SET firstName = IFNULL (?, firstName)', vedere http://stackoverflow.com/question s/2675968/sql-how-can-i-update-a-value-on-a-solo-column-if-that-value-is-null – mario
@mario Grazie, buona idea! – hek2mgl
@mario Grazie per il suggerimento! Non sono sicuro che questo possa aiutare il mio caso, se 'IFNULL (NULL, 10);' restituisce '10', dovrei comunque conoscere il valore di' 10', corretto? Sto semplicemente cercando di fermare l'aggiornamento di "UPDATE" se il valore di un oggetto è 'NULL' –