← Back to PHP Course | Chapter 11: Database | Lesson 16 of 21

PHP MySQL Select Data

किसी database से data वापस पढ़ना कम से कम इसे लिखने जितना ही common है -- products की एक list दिखाना, किसी user की profile दिखाना, एक search results page populate करना। एक SELECT statement, mysqli के through चलाया गया और एक fetch function से loop किया गया, आपकी दी गई किसी भी criteria से match करने वाली rows retrieve करता है।
Syntax
php
$result = mysqli_query($conn, "SELECT * FROM table_name");

mysqli_num_rows($result);                   // how many rows
while ($row = mysqli_fetch_assoc($result)) {
    echo $row["column_name"];
}

Basic SELECT और Results Fetch करना

mysqli_query($conn, 'SELECT * FROM users') query चलाता है और एक result set object return करता है, जिसे mysqli_fetch_assoc() फिर एक बार में एक row को हर column के name से keyed एक associative array में convert करता है -- इस fetch call को loop करना हर matching row process करता है।

उदाहरण: Basic SELECT and Fetching Results

php
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (name TEXT)");
$db->exec("INSERT INTO users (name) VALUES ('Alice'), ('Bob')");
// Declare `$result`, set to `$db->query("SELECT * FROM users")`
$result = $db->query("SELECT * FROM users");
// Keep looping while `$row = $result->fetchArray(SQLITE3_ASSOC)` holds
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
    // Print `$row['name'] . "\n"` to the output
    echo $row['name'] . "\n";
}
?>

कितनी Rows Return हुईं Check करना

mysqli_num_rows($result) एक SELECT query द्वारा match की गई rows की total count return करता है, जो एक "no results found" message दिखाने, एक result count दिखाने, या यह decide करने के लिए उपयोगी है कि loop चलाना worth है या नहीं।

उदाहरण: Checking How Many Rows Were Returned

php
<?php
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (name TEXT)");
$db->exec("INSERT INTO users (name) VALUES ('Alice'), ('Bob')");
$result = $db->query("SELECT COUNT(*) as total FROM users"); // mysqli_num_rows() equivalent
print_r($result->fetchArray(SQLITE3_ASSOC));
?>

एक Single Row Fetch करना

जब एक query से ज़्यादा से ज़्यादा एक row return होने की उम्मीद हो -- जैसे किसी specific user को उसकी unique ID से लुकअप करना -- एक single mysqli_fetch_assoc() call, बिना loop के, उस एक row को retrieve करने के लिए काफी है, या कुछ match न होने पर null।

उदाहरण: Fetching a Single Row

php
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (id INTEGER, name TEXT)");
$db->exec("INSERT INTO users VALUES (1, 'Alice')");
// Declare `$result`, set to `$db->query("SELECT * FROM users WHERE id = 1")`
$result = $db->query("SELECT * FROM users WHERE id = 1");
// Print a human-readable dump of `$result->fetchArray(SQLITE3_ASSOC)`
print_r($result->fetchArray(SQLITE3_ASSOC));
?>

Results को Objects की तरह Fetch करना

mysqli_fetch_object($result) mysqli_fetch_assoc() जैसा काम करता है लेकिन हर row को एक associative array के बजाय एक plain object की तरह return करता है -- इसलिए $row["name"] के बजाय, आप $row->name access करते हैं, जो कुछ developers को ज़्यादा naturally पढ़ने लायक लगता है।

उदाहरण: Fetching Results as Objects

php
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec("CREATE TABLE users (name TEXT)");
$pdo->exec("INSERT INTO users (name) VALUES ('Alice')");
$stmt = $pdo->query("SELECT * FROM users");
$row = $stmt->fetchObject(); // mysqli_fetch_object() equivalent
echo $row->name;
?>

सभी Rows को एक Array में Fetch करना

mysqli_fetch_all($result, MYSQLI_ASSOC) एक result set से बाकी बची हर row एक साथ retrieve करता है, associative arrays के एक array की तरह -- तब convenient जब आपको एक बार में एक row fetch करने के बजाय पूरा dataset memory में एक single PHP array की तरह चाहिए।

उदाहरण: Fetching All Rows into an Array

php
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec("CREATE TABLE users (name TEXT)");
$pdo->exec("INSERT INTO users (name) VALUES ('Alice'), ('Bob')");
$stmt = $pdo->query("SELECT * FROM users");
print_r($stmt->fetchAll(PDO::FETCH_ASSOC)); // mysqli_fetch_all($result, MYSQLI_ASSOC) equivalent
?>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक query के कम से कम एक row return करने की उम्मीद मानने से पहले mysqli_num_rows() check करना भूल जाना, एक empty result से fetch करने की कोशिश में एक error का कारण बनते हुए।
  2. सिर्फ एक या दो specific columns actually चाहिए होने पर SELECT * से हर column select करना, ज़रूरत से ज़्यादा data retrieve और transfer करते हुए।
  3. mysqli_fetch_assoc() (column name से keyed एक associative array return करता है) को mysqli_fetch_row() (एक plain indexed array return करता है) से mix up करना, इस्तेमाल की गई fetch style के लिए गलत तरीके से results access करते हुए।
चैप्टर सारांश
  • SELECT columns FROM table matching rows retrieve करता है, mysqli_query() के through चलाया और एक fetch function से loop किया जाता है।
  • mysqli_fetch_assoc() हर row को column name से keyed एक associative array की तरह return करता है, सबसे commonly इस्तेमाल होने वाली fetch style।
  • mysqli_num_rows() आपको बताता है कि एक query ने कितनी rows return कीं, loop से पहले check करने या एक "no results" message दिखाने के लिए उपयोगी।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.