एक पंक्ति मौजूद है या नहीं, यह जांचने के लिए निम्नलिखित आजमाए गए, परीक्षण किए गए और सिद्ध तरीके हैं।
(जिनमें से कुछ का मैं स्वयं उपयोग करता हूं, या अतीत में उपयोग कर चुका हूं)।
संपादित करें: मैंने अपने सिंटैक्स में पिछली त्रुटि की थी जहां मैंने mysqli_query()
. का उपयोग किया था दो बार। कृपया संशोधन देखें।
यानी:
if (!mysqli_query($con,$query))
जिसे केवल if (!$query)
. के रूप में पढ़ना चाहिए था ।
- उस गलती को नज़रअंदाज़ करने के लिए मैं क्षमा चाहता हूं।
साइड नोट: दोनों '".$var."'
और '$var'
वहीं काम करें। आप दोनों में से किसी एक का उपयोग कर सकते हैं, दोनों मान्य सिंटैक्स हैं।
यहाँ दो संपादित प्रश्न हैं:
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($con));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
और आपके मामले में:
$query = mysqli_query($dbl, "SELECT * FROM `tblUser` WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($dbl));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
आप mysqli_
का भी इस्तेमाल कर सकते हैं तैयार बयान के साथ
विधि:
$query = "SELECT `email` FROM `tblUser` WHERE email=?";
if ($stmt = $dbl->prepare($query)){
$stmt->bind_param("s", $email);
if($stmt->execute()){
$stmt->store_result();
$email_check= "";
$stmt->bind_result($email_check);
$stmt->fetch();
if ($stmt->num_rows == 1){
echo "That Email already exists.";
exit;
}
}
}
या पीडीओ विधि तैयार बयान के साथ :
<?php
$email = $_POST['email'];
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';
try {
$conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit( $e->getMessage() );
}
// assuming a named submit button
if(isset($_POST['submit']))
{
try {
$stmt = $conn->prepare('SELECT `email` FROM `tblUser` WHERE email = ?');
$stmt->bindParam(1, $_POST['email']);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
if($stmt->rowCount() > 0){
echo "The record exists!";
} else {
echo "The record is non-existant.";
}
}
?>
- तैयार किए गए कथन SQL इंजेक्शन से बचाने में मदद करने के लिए सबसे अच्छे हैं।
नायब:
प्रपत्रों और POST सरणियों के साथ व्यवहार करते समय जैसा कि ऊपर उपयोग/उल्लिखित किया गया है, सुनिश्चित करें कि POST सरणियों में मान हैं, कि POST विधि का उपयोग प्रपत्र के लिए और इनपुट के लिए नामित विशेषताओं के मिलान के लिए किया जाता है।
- FYI करें:यदि स्पष्टीकरण का निर्देश नहीं दिया गया है तो फ़ॉर्म GET पद्धति के लिए डिफ़ॉल्ट हैं।
नोट:<input type = "text" name = "var">
- $_POST['Var']
मिलान। $_POST['Var']
कोई मुकाबला नहीं।
- POST सरणियाँ केस-संवेदी हैं।
परामर्श करें:
संदर्भों की जाँच में त्रुटि:
- http://php.net/manual/en/function। error-reporting.php
- http://php.net/manual/en/mysqli.error। php
- http://php.net/manual/en/pdo। error-handling.php
कृपया ध्यान दें कि यदि आप इस प्रश्नोत्तर पर जा रहे हैं और आप mysql_
का उपयोग कर रहे हैं, तो MySQL API इंटरमिक्स नहीं करते हैं। के साथ कनेक्ट करने के लिए (और साथ पूछताछ)।
- कनेक्ट करने से लेकर क्वेरी करने तक आपको उसी का उपयोग करना चाहिए।
इसके बारे में निम्नलिखित से परामर्श करें:
यदि आप mysql_
. का उपयोग कर रहे हैं एपीआई और इसके साथ काम करने का कोई विकल्प नहीं है, तो स्टैक पर निम्नलिखित प्रश्नोत्तर देखें:
mysql_*
फ़ंक्शंस बहिष्कृत हैं और भविष्य के PHP रिलीज़ से हटा दिए जाएंगे।
- 21वीं सदी में कदम रखने का समय आ गया है।
आप (a) पंक्ति(पंक्तियों) में एक UNIQUE बाधा भी जोड़ सकते हैं।
संदर्भ:
- http://dev.mysql. com/doc/refman/5.7/hi/constraint-primary-key.html
- http://dev.mysql.com/ doc/refman/5.7/hi/alter-table.html
- कैसे जांचें कि डुप्लिकेट से बचने के लिए कोई मान पहले से मौजूद है या नहीं?
- मौजूदा तालिका में अद्वितीय कुंजी कैसे जोड़ें (गैर अद्वितीय पंक्तियों के साथ)