Mysql
 sql >> база данни >  >> RDS >> Mysql

Спрете sql да актуализира празни или празни полета от моя формуляр за актуализиране

UPDATE `tablename`
SET `field` = IF(? <> '', ?, `field`)
WHERE ...

Това замества задачата за проверка за празни записи в MySQL и полето използва предишната си стойност вместо празна стойност. Трябва да предадете стойността в execute() два пъти, за да работи това. По същество той прави същото като вие, но без да се налага да съхранява стойността във вашата PHP сесия.

Използвайки този подход, вашият код за актуализиране ще изглежда така:

/*
  This block is no longer necessary
if($_POST['firstname']){ $firstname = $_POST['firstname']; }
else { $firstname = $_SESSION['uname']['firstname']; }

if($_POST['lastname']){ $lastname = $_POST['lastname']; }
else { $lastname = $_SESSION['uname']['lastname']; }

if($_POST['email']){ $email= $_POST['email']; }
else { $email = $_SESSION['uname']['email']; }
*/

$query = "
  UPDATE `users`
  SET
    `firstname` = IF(? <> '', ?, `firstname`),
    `lastname` = IF(? <> '', ?, `lastname`),
    `email` = IF(? <> '', ?, `email`)
  WHERE `id` = ?
";

$results = $condb->prepare($query);

$results->execute(array(
  $_POST['firstname'], $_POST['firstname'],
  $_POST['lastname'], $_POST['lastname'],
  $_POST['email'], $_POST['email'],
  $_SESSION['uname']['id']
));

Вашият съществуващ код би попречил на потребителя да въведе един единствен 0 самостоятелно, което няма да стане - може да искате да добавите проверка и за това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Презапишете MySQL таблици с AWS Glue

  2. Използване на оператор IN за параметър на запаметена процедура SQL

  3. Как да премахнете дублиращи се елементи в MySQL с набор от данни от 20 милиона реда?

  4. Mysql премахва времевия компонент от datetime

  5. Как можем да преименуваме името на базата данни в MySQL 5.0