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

प्रकार बूल के मूल्य पर सरणी ऑफ़सेट तक पहुँचने का प्रयास कर रहा है

आपको यह त्रुटि शायद इसलिए मिल रही है क्योंकि डेटाबेस में आपके मानदंड से मेल खाने वाले कोई रिकॉर्ड नहीं मिले थे।

इस त्रुटि को हल करने का सबसे आसान तरीका यह जांचना है कि डेटाबेस ने पहले कुछ लौटाया है या नहीं।

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
// VVV - Here I am checking if there was anything returned and then I check the condition
if($emailRes && $emailRes['Email']==$_POST['email']) {
    // ...
}

यदि आपको परवाह नहीं है कि डेटाबेस ने कुछ भी लौटाया है, तो आप बस एक डिफ़ॉल्ट मान प्रदान कर सकते हैं। उदाहरण के लिए:

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
$email = $emailRes['Email'] ?? ''; // default: empty string

पीडीओ का उपयोग करके डीबी में अस्तित्व की जांच करने का सही तरीका है:

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username");
$query->execute([':Username' => $name]);
if ($query->fetchColumn()) {
    throw new \Exception("Username is already in use!");
}

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Email =:Email");
$query->execute([':Email' => $email]);
if ($query->fetchColumn()) {
    throw new \Exception("Email is already in use!");
}

पंक्ति लाने और PHP में फिर से तुलना करने के बजाय मैं डेटाबेस से मेल खाने वाली पंक्तियों की गिनती ला रहा हूं और मैं उस गिनती को if में बूलियन के रूप में उपयोग करता हूं बयान। fetchColumn() पहली पंक्ति से एक कॉलम लाएगा और अगर मैं COUNT(*) . का उपयोग करता हूं मुझे पता है कि हमेशा एक पंक्ति होगी।

आप इसे एक प्रश्न में भी कर सकते हैं:

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username OR  Email =:Email");
$query->execute([':Username' => $name, ':Email' => $email]);
if ($query->fetchColumn()) {
    throw new \Exception("Username or email is already in use!");
}



  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 में initcap कार्यक्षमता कैसे प्राप्त कर सकता हूं?

  2. डेटाबेस में सभी PHP त्रुटियों को आउटपुट करना error_log नहीं है

  3. क्या मैं एक पूर्ण MySQL mysqldump फ़ाइल से एकल तालिका को पुनर्स्थापित कर सकता हूं?

  4. सुरक्षा में सुधार के लिए लोकलहोस्ट से MySQL कनेक्शन को प्रतिबंधित करना

  5. मैं बिना अस्थायी तालिकाओं के एक MySQL तालिका में सभी डुप्लिकेट रिकॉर्ड कैसे हटा सकता हूं?