मुझे स्वीकार करना होगा, mysqli_query()
मैन्युअल प्रविष्टि में एकाधिक पंक्तियों को लाने के तरीके पर एक स्पष्ट उदाहरण नहीं है। ऐसा इसलिए हो सकता है क्योंकि दिनचर्या इतनी नियमित है, जिसे PHP लोग दशकों से जानते हैं:
$result = $link->query("DESCRIBE students");
while ($row = $result->fetch_assoc()) {
// to print all columns automatically:
foreach ($row as $value) {
echo "<td>$value</td>";
// OR to print each column separately:
echo "<td>",$row['Field'],"</td><td>",$row['Type'],"</td>\n";
}
}
यदि आप कॉलम के शीर्षक प्रिंट करना चाहते हैं, तो आपको पहले अपने डेटा को नेस्टेड एरे में चुनना होगा और फिर पहली पंक्ति की कुंजियों का उपयोग करना होगा:
// getting all the rows from the query
// note that handy feature of OOP syntax
$data = $link->query("DESC students")->fetch_all(MYSQLI_ASSOC);
// getting keys from the first row
$header = array_keys(reset($data));
// printing them
foreach ($header as $value) {
echo "<td>$value</td>";
}
// finally printing the data
foreach ($data as $row) {
foreach ($row as $value) {
echo "<td>$value</td>";
}
}
कुछ मेजबानों के पास fetch_all()
. के लिए कोई समर्थन नहीं हो सकता है समारोह। ऐसी स्थिति में, $data
भरें सामान्य तरीके से सरणी:
$data = [];
$result = $link->query("DESC students");
while ($row = $result->fetch_assoc())
{
$data[] = $row;
}
दो महत्वपूर्ण नोट जो मुझे जोड़ने हैं।
-
आपको प्रत्येक mysqli कथन के लिए मैन्युअल रूप से जाँच करने के बजाय त्रुटियों को स्वचालित रूप से फेंकने के लिए mysqli को कॉन्फ़िगर करना होगा। ऐसा करने के लिए, इस लाइन को पहले जोड़ें
mysqli_connect()
:mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
-
सबसे महत्वपूर्ण नोट: इसके विपरीत
mysql_query()
,mysqli_query()
बहुत सीमित उपयोग है। आप इस फ़ंक्शन का उपयोग केवल यदि क्वेरी में किसी भी चर का उपयोग नहीं करने जा रहे हैं, तो कर सकते हैं। अगर किसी PHP वेरिएबल का उपयोग किया जा रहा है, तो आपको कभी भीmysqli_query()
. का उपयोग नहीं करना चाहिए , लेकिन हमेशा तैयार किए गए कथनों से चिपके रहें , इस तरह:$stmt = $mysqli->prepare("SELECT * FROM students WHERE class=?"); $stmt->bind_param('i', $class); $stmt->execute(); $data = $stmt->get_result()->fetch_all();
यह थोड़ा चिंताजनक है, मुझे स्वीकार करना होगा। कोड की मात्रा को कम करने के लिए आप या तो पीडीओ का उपयोग कर सकते हैं या सरल सहायक फ़ंक्शन अपना सकते हैं। अंदर सभी तैयार/बाध्य/निष्पादित व्यवसाय करने के लिए:
$sql = "SELECT * FROM students WHERE class=?";
$data = prepared_select($mysqli, $sql, [$class])->fetch_all();