Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hentikan sql dari memperbarui bidang kosong atau kosong dari formulir pembaruan saya

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

Ini menggantikan tugas memeriksa entri kosong ke MySQL dan bidang menggunakan nilai sebelumnya alih-alih nilai kosong. Anda harus meneruskan nilainya ke execute() dua kali agar ini berhasil. Ini pada dasarnya melakukan hal yang sama seperti yang Anda lakukan tetapi tanpa harus menyimpan nilai dalam sesi PHP Anda.

Dengan menggunakan pendekatan ini, kode pembaruan Anda akan terlihat seperti ini:

/*
  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']
));

Kode Anda yang ada akan menghentikan pengguna memasukkan satu 0 sendiri, yang tidak akan dilakukan - Anda mungkin ingin menambahkan tanda centang untuk itu juga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cakephp 3.0 dapatkan nilai dalam dua kolom sebagai satu

  2. Pemicu MYSQL:JSON_SEARCH nilai integer dalam array json bilangan bulat

  3. mysql_connect() Perbedaan antara localhost dan 127.0.0.1

  4. Bagaimana cara menggunakan regex di MySQL?

  5. kesalahan menjalankan Apache setelah menginstal xampp