Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एसक्यूएल को मेरे अपडेट फॉर्म से खाली या खाली फ़ील्ड अपडेट करने से रोकें

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. क्या मैं '%' की तरह जहां कॉल कर सकता हूं, नल मान भी चुनें?

  2. मैक के लिए MySQL वर्कबेंच पर कुछ कुंजियाँ ठीक से काम नहीं कर रही हैं

  3. अजगर - _mysql फ़ाइल शामिल नहीं खोल सकता:'config-win.h':mysql-python स्थापित करते समय ऐसी कोई फ़ाइल या निर्देशिका नहीं

  4. रूबी सीएसवी मल्टीलाइन फ़ील्ड पढ़ें

  5. सी . में एसक्यूएल इंजेक्शन को रोकना