Ich erstelle ein mehrstufiges Formular für meine Benutzer. Sie können einige oder alle Felder aktualisieren. Also, ich muss die Werte senden, überprüfen, ob sie eingestellt sind und wenn ja, führen Sie eine UPDATE
. Hier ist, was ich bisher:UPDATE ein Array mit 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,
);
Hier ist mein PDO (na ja, der Anfang Versuch)
$sth = $this->dbh->prepare("UPDATE user SET firstName = "); //<---Stuck here
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
return $result;
Grundsätzlich, wie kann ich die UPDATE
Anweisung erstellen, damit es nur die Elemente in dem Updates Array, die nicht NULL
sind?
Ich dachte über eine foreach
Schleife wie folgt ausgeführt werden:
foreach($updates as $key => $value) {
if($value == NULL) {
unset($updates[$key]);
}
}
aber wie würde ich die prepare
Aussage schreiben, wenn ich von den Werten nicht sicher bin?
Wenn ich das komplett falsch mache, bitte weisen Sie mich in die richtige Richtung. Vielen Dank.
Sie können wahrscheinlich 'SET firstName = IFNULL (?, firstName)' verwenden, siehe http://stackoverflow.com/question s/2675968/sql-wie-kann-ich-update-ein-Wert-auf-einer-Spalte-nur-wenn-das-Wert-ist-null – mario
@mario Danke, gute Idee! – hek2mgl
@mario Danke für den Tipp! Ich bin mir nicht sicher, ob das meinem Fall helfen wird, wenn 'IFNULL (NULL, 10);' '' '10 zurückgibt, muss ich immer noch den Wert für' 10' wissen, richtig? Ich versuche einfach, das "UPDATE" zu verhindern, wenn der Wert eines Elements "NULL" ist. –