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

मैं mysqli_ फ़ंक्शंस का उपयोग करने के लिए mysql_ फ़ंक्शंस का उपयोग करके स्क्रिप्ट को कैसे परिवर्तित करूं?

नोट: mysql_ . से कनवर्ट किया जा रहा है से mysqli_ इष्टतम नहीं हो सकता है। पीडीओ पर विचार करें अगर आप अपने सभी कोड को OOP में बदलने के लिए तैयार हैं ।

mysql_ . के सभी उदाहरणों को बदलने का प्रयास करना आकर्षक हो सकता है mysqli_ . के साथ और प्रार्थना करो यह काम करता है। आप करीब होंगे लेकिन काफी हद तक नहीं।

डेटाबेस से कनेक्ट करना:

सौभाग्य से, mysqli_connect mysql_query . के काफी करीब से काम करता है कि आप उनके फ़ंक्शन नामों की अदला-बदली कर सकते हैं।

mysql_:

$con = mysql_connect($host, $username, $password);

mysqli_:

$con = mysqli_connect($host, $username, $password);

डेटाबेस का चयन करना

अब, अधिकांश अन्य कार्यों के साथ mysqli_ पुस्तकालय, आपको पास करने की आवश्यकता होगी mysqli_select_db डेटाबेस कनेक्शन इसके पहले . के रूप में पैरामीटर। अधिकांश mysqli_ फ़ंक्शंस को पहले कनेक्शन ऑब्जेक्ट की आवश्यकता होती है।

इस फ़ंक्शन के लिए, आप केवल उन तर्कों के क्रम को स्विच कर सकते हैं जिन्हें आप फ़ंक्शन में पास करते हैं। यदि आपने इसे पहले कनेक्शन ऑब्जेक्ट पास नहीं किया था, तो आपको इसे अब पहले पैरामीटर के रूप में जोड़ना होगा।

mysql_:

mysql_select_db($dbname, $con);

mysqli_:

mysqli_select_db($con, $dbname);

एक बोनस के रूप में, आप डेटाबेस नाम को चौथे पैरामीटर के रूप में mysqli_connect . पर पास कर सकते हैं - कॉल करने की आवश्यकता को दरकिनार करते हुए mysqli_select_db

$con = mysqli_connect($host, $username, $password, $dbname);

उपयोगकर्ता इनपुट को स्वच्छ करें

mysqli_real_escape_string का उपयोग करना mysql_real_escape_string . से बहुत मिलता-जुलता है . आपको कनेक्शन ऑब्जेक्ट को पहले पैरामीटर के रूप में पास करने की आवश्यकता है।

mysql_:

$value1 = mysql_real_escape_string($input_string);

mysqli_:

$value1 = mysqli_real_escape_string($con, $input_string);

बहुत महत्वपूर्ण:प्रश्न तैयार करना और चलाना

एक कारण mysql_ तैयार किए गए बयानों को संभालने में उनकी अक्षमता के साथ शुरू करने के लिए कार्यों को बहिष्कृत कर दिया गया था। अगर आप बस अपने कोड को mysqli_ . में बदलते हैं यह महत्वपूर्ण कदम उठाए बिना, आप mysql_ . की कुछ सबसे बड़ी कमजोरियों के अधीन हैं कार्य।

तैयार किए गए बयानों और उनके लाभों पर इन लेखों को पढ़ने लायक है:

विकिपीडिया - तैयार विवरण

PHP.net - MySQLi तैयार विवरण

नोट:तैयार कथनों का उपयोग करते समय, * का उपयोग करने के बजाय, प्रत्येक कॉलम को स्पष्ट रूप से सूचीबद्ध करना सबसे अच्छा है जिसे आप क्वेरी करने का प्रयास कर रहे हैं। सभी स्तंभों को क्वेरी करने के लिए संकेतन। इस तरह आप सुनिश्चित कर सकते हैं कि आपने mysqli_stmt_bind_result पर अपनी कॉल के सभी कॉलमों का हिसाब कर लिया है .

mysql_:

$query = 'SELECT * FROM table1 WHERE table1.col1=' . $value1 . '';
$result = mysql_query($query, $con);
while($row = mysql_fetch_assoc*$result)
{
    $col1 = $row['col1'];
    $col2 = $row['col2'];

    echo $col1 . ' ' . $col2 . '<br />';
}

mysqli_:

$query = 'SELECT col1,col2 FROM table1 WHERE table1.col1=?';
if ($stmt = mysqli_prepare($link, $query)) {

    /* pass parameters to query */
    mysqli_stmt_bind_param($stmt, "s", $value1);

    /* run the query on the database */
    mysqli_stmt_execute($stmt);

    /* assign variable for each column to store results in */
    mysqli_stmt_bind_result($stmt, $col1, $col2);

    /* fetch values */
    while (mysqli_stmt_fetch($stmt)) {
        /*
            on each fetch, the values for each column 
            in the results are automatically stored in 
            the variables we assigned using 
            "mysqli_stmt_bind_result"
        */
        echo $col1 . ' ' . $col2 . '<br />';
    }

    /* close statement */
    mysqli_stmt_close($stmt);
}

त्रुटियां दिखाई जा रही हैं

mysqli_ . के साथ त्रुटियां दिखाना थोड़ा अलग तरीके से काम करता है . mysqli_error कनेक्शन ऑब्जेक्ट को इसके पहले पैरामीटर के रूप में आवश्यक है। लेकिन क्या होगा अगर कनेक्शन विफल हो गया? mysqli_ उन कार्यों का एक छोटा सा सेट प्रस्तुत करता है जिन्हें कनेक्शन ऑब्जेक्ट की आवश्यकता नहीं होती है:mysqli_connect_* कार्य।

mysql_:

if (!$con) {
    die('Could not connect: ' . mysql_error());
}

if (!$result) {
    die('SQL Error: ' . mysql_error());
}

mysqli_:

/* check connection error*/
if (mysqli_connect_errno()) {
    die( 'Could not connect: ' . mysqli_connect_error() );
}

/* check query error */
if ($stmt = mysqli_prepare($link, $query)) {

    // ... execute query

    if (mysqli_stmt_error($stmt)) {
        echo 'SQL Error: ' . mysqli_stmt_error($stmt);
    }
}


  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. OUTFILE में चुनें का उपयोग करते समय हेडर शामिल करें?

  3. एक MySQL तालिका में डालें या मौजूद होने पर अपडेट करें

  4. यदि mysqldump से मौजूद नहीं है तो तालिका बनाएं

  5. पायथन का उपयोग करके एक MySQL डीबी में बीएलओबी के रूप में संग्रहीत फ़ाइल को कैसे सम्मिलित/पुनर्प्राप्त करें?