PHP MySQL Where
In this page:
SELECT * FROM table_name WHERE column = value;
SELECT * FROM table_name WHERE column > value AND other_column = value;
SELECT * FROM table_name WHERE column = value OR other_column = value;
Basic WHERE Filtering
किसी SELECT statement में WHERE column = value add करना results को सिर्फ उस condition से match करने वाली rows तक restrict करता है -- SELECT * FROM users WHERE status = active सिर्फ active users return करता है, table की बाकी हर row ignore करते हुए।
उदाहरण: Basic WHERE Filtering
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (name TEXT, status TEXT)");
$db->exec("INSERT INTO users VALUES ('Alice','active'), ('Bob','inactive')");
// Declare `$result`, set to `$db->query("SELECT * FROM users WHERE status = 'active'")`
$result = $db->query("SELECT * FROM users WHERE status = 'active'");
// Print a human-readable dump of `$result->fetchArray(SQLITE3_ASSOC)`
print_r($result->fetchArray(SQLITE3_ASSOC));
?>
Login to try C/C++/Java/PHP code in the editor
WHERE में Comparison Operators
exact equality से आगे, WHERE comparison operators की पूरी range support करता है -- >, <, >=, <=, और != -- numeric और date comparisons के लिए, जैसे 50 से ज़्यादा price वाला हर product ढूँढना, या किसी certain date के बाद placed हर order।
उदाहरण: Comparison Operators in WHERE
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE products (name TEXT, price INTEGER)");
$db->exec("INSERT INTO products VALUES ('Book', 60), ('Pen', 10)");
// Declare `$result`, set to `$db->query("SELECT * FROM products WHERE price > 50")`
$result = $db->query("SELECT * FROM products WHERE price > 50");
// Print a human-readable dump of `$result->fetchArray(SQLITE3_ASSOC)`
print_r($result->fetchArray(SQLITE3_ASSOC));
?>
Login to try C/C++/Java/PHP code in the editor
AND और OR से Conditions Combine करना
AND माँग करता है कि किसी row के match होने के लिए listed हर condition true हो, जबकि OR कम से कम एक की माँग करता है -- उन्हें combine करना (clarity के लिए parentheses के साथ) आपको precise, multi-part filters बनाने देता है, जैसे "active users who are also over 18"।
उदाहरण: Combining Conditions with AND and OR
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (name TEXT, status TEXT, age INTEGER)");
$db->exec("INSERT INTO users VALUES ('Alice','active',20)");
// Declare `$result`, set to `$db->query("SELECT * FROM users WHERE status = 'active' AND age > 18")`
$result = $db->query("SELECT * FROM users WHERE status = 'active' AND age > 18");
// Print a human-readable dump of `$result->fetchArray(SQLITE3_ASSOC)`
print_r($result->fetchArray(SQLITE3_ASSOC));
?>
Login to try C/C++/Java/PHP code in the editor
LIKE से Pattern Matching
LIKE किसी भी संख्या में characters के लिए wildcard की तरह % इस्तेमाल करके text को एक pattern के against match करता है -- WHERE name LIKE '%smith%' कहीं भी smith रखने वाला हर name ढूँढता है, जो search-style filtering के लिए उपयोगी है जो एक exact = comparison नहीं कर सकता।
उदाहरण: Pattern Matching with LIKE
<?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 VALUES ('John Smith'), ('Jane Doe')");
// Declare `$result`, set to `$db->query("SELECT * FROM users WHERE name LIKE '%smith%'")`
$result = $db->query("SELECT * FROM users WHERE name LIKE '%smith%'");
// Print a human-readable dump of `$result->fetchArray(SQLITE3_ASSOC)`
print_r($result->fetchArray(SQLITE3_ASSOC));
?>
Login to try C/C++/Java/PHP code in the editor
NULL Check करना और IN से एक List Match करना
WHERE column IS NULL एक missing value check करता है (= NULL कभी match नहीं करता, यहाँ तक कि किसी दूसरे NULL के against भी नहीं, SQL की three-valued logic की वजह से), और WHERE column IN (v1, v2, v3) किसी भी ऐसी row को match करता है जिसकी value listed कई options में से एक हो, OR conditions की एक लंबी chain को compactly replace करते हुए।
उदाहरण: Checking for NULL and Matching a List with IN
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE users (name TEXT, phone TEXT)");
$db->exec("INSERT INTO users VALUES ('Alice', NULL), ('Bob', '555-1234')");
// Declare `$result`, set to `$db->query("SELECT * FROM users WHERE phone IS NULL")`
$result = $db->query("SELECT * FROM users WHERE phone IS NULL");
// Print a human-readable dump of `$result->fetchArray(SQLITE3_ASSOC)`
print_r($result->fetchArray(SQLITE3_ASSOC));
// Declare `$result2`, set to `$db->query("SELECT * FROM users WHERE name IN ('Alice', 'Carol')")`
$result2 = $db->query("SELECT * FROM users WHERE name IN ('Alice', 'Carol')");
// Print a human-readable dump of `$result2->fetchArray(SQLITE3_ASSOC)`
print_r($result2->fetchArray(SQLITE3_ASSOC));
?>
Login to try C/C++/Java/PHP code in the editor
- raw user input को सीधे SQL string में concatenate करके एक WHERE clause बनाना, एक unsafe INSERT जैसा ही SQL injection risk खोलते हुए।
- exact match के लिए एक single = इस्तेमाल करना जब intended comparison actually एक range या pattern match था, जैसे contains behavior चाहना लेकिन = के बजाय LIKE की ज़रूरत हो।
- यह भूल जाना कि raw SQL में एक WHERE clause में string values को quote करना ज़रूरी है, जबकि numeric values को नहीं -- हालाँकि prepared statements इस distinction से पूरी तरह बचाते हैं।
- WHERE condition एक query को सिर्फ उन rows तक filter करता है जहाँ वह condition true evaluate होती है।
- Comparison operators (=, >, <, LIKE) और logical operators (AND, OR) मिलकर precise filtering conditions बनाते हैं।
- user input से आई WHERE clause values को हमेशा एक prepared statement के through bound किया जाना चाहिए, कभी सीधे SQL string में concatenated नहीं।
Chapter Quiz — Complete all 21 topics to unlock
0/21 topics done
Complete these topics first:
- PHP MySQL Introduction
- PHP MySQLi Connection
- PHP PDO Introduction
- PHP CRUD Operations
- PHP Prepared Statements
- PHP Stored Procedures
- PHP Transactions
- PHP Error Handling in DB
- PHP MySQL Connect
- PHP MySQL Create DB
- PHP MySQL Create Table
- PHP MySQL Insert Data
- PHP MySQL Get Last ID
- PHP MySQL Insert Multiple
- PHP MySQL Prepared Statements
- PHP MySQL Select Data
- PHP MySQL Where
- PHP MySQL Order By
- PHP MySQL Delete Data
- PHP MySQL Update Data
- PHP MySQL Limit Data