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

mysql_fetch_array ()/mysql_fetch_assoc ()/mysql_fetch_row ()/mysql_num_rows आदि... पैरामीटर 1 को संसाधन होने की अपेक्षा करता है

विभिन्न कारणों से एक क्वेरी विफल हो सकती है जिस स्थिति में mysql_* और mysqli एक्सटेंशन दोनों false वापस आ जाएंगे उनके संबंधित क्वेरी फ़ंक्शंस/विधियों से। आपको उस त्रुटि स्थिति के लिए परीक्षण करने और उसके अनुसार इसे संभालने की आवश्यकता है।

mysql_* एक्सटेंशन :

<ब्लॉकक्वॉट>

नोट द और php संस्करण 7. में हटा दिया गया है।

$resultजांचें इसे mysql_fetch_array . पर भेजने से पहले . आप पाएंगे कि यह false है क्योंकि क्वेरी विफल रही। देखें mysql_query संभावित वापसी मूल्यों के लिए दस्तावेज़ीकरण और उनसे निपटने के तरीके के लिए सुझाव।

$username = mysql_real_escape_string($_POST['username']);
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '$username'");

if($result === FALSE) { 
    die(mysql_error()); // TODO: better error handling
}

while($row = mysql_fetch_array($result))
{
    echo $row['FirstName'];
}

mysqli एक्सटेंशन
प्रक्रियात्मक शैली :

$username = mysqli_real_escape_string($mysqli, $_POST['username']);
$result = mysqli_query($mysqli, "SELECT * FROM Users WHERE UserName LIKE '$username'");

// mysqli_query returns false if something went wrong with the query
if($result === FALSE) { 
    yourErrorHandler(mysqli_error($mysqli));
}
else {
    // as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
    foreach( $result as $row ) {
        ...

ऊ-शैली :

$username = $mysqli->escape_string($_POST['username']);
$result = $mysqli->query("SELECT * FROM Users WHERE UserName LIKE '$username'");

if($result === FALSE) { 
    yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else {
    // as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
    foreach( $result as $row ) {
      ...

तैयार किए गए कथन का उपयोग करना:

$stmt = $mysqli->prepare('SELECT * FROM Users WHERE UserName LIKE ?');
if ( !$stmt ) {
    yourErrorHandler($mysqli->error); // or $mysqli->error_list
}
else if ( !$stmt->bind_param('s', $_POST['username']) ) {
    yourErrorHandler($stmt->error); // or $stmt->error_list
}
else if ( !$stmt->execute() ) {
    yourErrorHandler($stmt->error); // or $stmt->error_list
}
else {
    $result = $stmt->get_result();
    // as of php 5.4 mysqli_result implements Traversable, so you can use it with foreach
    foreach( $result as $row ) {
      ...

ये उदाहरण केवल बताते हैं क्या किया जाना चाहिए (त्रुटि प्रबंधन), यह कैसे करना नहीं है। प्रोडक्शन कोड में or die का इस्तेमाल नहीं होना चाहिए HTML को आउटपुट करते समय, अन्यथा यह (कम से कम) अमान्य HTML उत्पन्न करेगा। साथ ही, डेटाबेस त्रुटि संदेशों को गैर-व्यवस्थापक उपयोगकर्ताओं को प्रदर्शित नहीं किया जाना चाहिए, क्योंकि यह बहुत अधिक जानकारी प्रकट करता है



  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 के साथ यादृच्छिक पंक्तियों का चयन करना

  2. चेतावनी:mysql_fetch_array() पैरामीटर 1 को संसाधन, बूलियन में दिए जाने की अपेक्षा करता है

  3. COUNT(*) के आधार पर फ़िल्टर करें?

  4. कोडनिर्देशक लेनदेन

  5. बाइनरी कॉलेशन का उपयोग करने से क्या प्रभाव पड़ता है?