📖 Scenario: You are building a simple PHP script to fetch user data from a database. You will practice running SQL queries using the query method.
🎯 Goal: Create a PHP script that connects to a database, runs a SELECT query using the query method, and displays the user names.
📋 What You'll Learn
Create a mysqli connection object named $conn with host 'localhost', user 'root', password '', and database 'testdb'.
Create a SQL query string $sql to select all columns from the users table.
Use the query method on $conn with $sql to get the result in $result.
Loop through $result using fetch_assoc() and print each user's name.
Close the database connection at the end.
💡 Why This Matters
🌍 Real World
Fetching data from a database is a common task in web development to show dynamic content like user profiles or product lists.
💼 Career
Understanding how to execute queries and handle results is essential for backend developers working with PHP and MySQL databases.
Progress0 / 4 steps
1
Create the database connection
Create a mysqli connection object called $conn using new mysqli("localhost", "root", "", "testdb").
PHP
Hint
Use the new mysqli(host, user, password, database) syntax to connect.
2
Write the SQL query string
Create a string variable called $sql and set it to "SELECT * FROM users".
PHP
Hint
Assign the exact string "SELECT * FROM users" to $sql.
3
Run the query using the query method
Use the query method on $conn with $sql and store the result in $result.
PHP
Hint
Use $conn->query($sql) to run the query.
4
Fetch and display user names
Use a while loop with $row = $result->fetch_assoc() to print each user's name with echo $row['name'] . "\n";. Then close the connection with $conn->close();.
PHP
Hint
Use fetch_assoc() inside a while loop to get each row as an associative array.
Practice
(1/5)
1. What does the query method in PHP do when used with a database connection?
easy
A. It executes an SQL statement on the database.
B. It creates a new database connection.
C. It formats the SQL query string.
D. It closes the database connection.
Solution
Step 1: Understand the purpose of the query method
The query method is designed to send SQL commands to the database for execution.
Step 2: Identify what the method does with the SQL statement
It runs the SQL command and returns the result, such as data or success status.
Final Answer:
It executes an SQL statement on the database. -> Option A
Quick Check:
query method = executes SQL [OK]
Hint: query method runs SQL commands on the database [OK]
Common Mistakes:
Thinking query creates or closes connections
Confusing query with preparing statements
Assuming query formats SQL strings
2. Which of the following is the correct syntax to execute a SELECT query using the query method on a PDO object named $pdo?
easy
A. $pdo->query = 'SELECT * FROM users';
B. $pdo->execute('SELECT * FROM users');
C. query($pdo, 'SELECT * FROM users');
D. $pdo->query('SELECT * FROM users');
Solution
Step 1: Recall the method call syntax for PDO query
The query method is called on the PDO object using arrow notation with the SQL string as argument.
Step 2: Check each option for correct syntax
$pdo->query('SELECT * FROM users'); correctly calls $pdo->query('SELECT * FROM users');. Others misuse assignment, function call, or wrong method.
Final Answer:
$pdo->query('SELECT * FROM users'); -> Option D
Quick Check:
Correct method call = $pdo->query('SELECT * FROM users'); [OK]
Hint: Use arrow operator and pass SQL string to query() [OK]
Common Mistakes:
Using assignment instead of method call
Calling query as a standalone function
Using execute instead of query for simple queries
3. What will be the output of the following PHP code snippet?
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE test (id INTEGER)');
$pdo->exec('INSERT INTO test (id) VALUES (1), (2), (3)');
$result = $pdo->query('SELECT COUNT(*) FROM test');
$count = $result->fetchColumn();
echo $count;
medium
A. 3
B. COUNT(*)
C. 1
D. Error
Solution
Step 1: Understand the SQL commands executed
The code creates a table and inserts three rows with ids 1, 2, and 3.
Step 2: Analyze the SELECT COUNT(*) query and fetch result
The query counts rows in the table, which is 3. fetchColumn() returns this count as a string.
Final Answer:
3 -> Option A
Quick Check:
Row count = 3 [OK]
Hint: COUNT(*) returns number of rows, fetchColumn gets that value [OK]
Common Mistakes:
Confusing fetchColumn() with fetch() returning array
Expecting column name instead of count value
Assuming query returns error without table
4. Identify the error in the following PHP code that uses the query method:
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass');
$sql = "INSERT INTO users (name) VALUES ('Alice')";
$result = $pdo->query($sql);
if ($result) {
echo "Insert successful";
} else {
echo "Insert failed";
}
medium
A. PDO connection string is wrong.
B. The SQL syntax is incorrect for INSERT.
C. Using query() for INSERT may not return true/false as expected.
D. Missing fetch() after query() call.
Solution
Step 1: Check usage of query() with INSERT statements
The query method can execute INSERT but returns a PDOStatement or false, not a simple true/false.
Step 2: Understand how to check success of INSERT
For INSERT, it's better to use exec() which returns affected rows count or false on failure.
Final Answer:
Using query() for INSERT may not return true/false as expected. -> Option C
Quick Check:
query() returns PDOStatement, not boolean for INSERT [OK]
Hint: Use exec() for INSERT to get affected rows count [OK]
Common Mistakes:
Expecting query() to return boolean for INSERT
Confusing query() and exec() methods
Ignoring return value type of query()
5. You want to retrieve all usernames from a users table and store them in an array using the query method. Which code snippet correctly does this?
hard
A. $usernames = $pdo->query('SELECT username FROM users')->fetch(PDO::FETCH_COLUMN);
B. $stmt = $pdo->query('SELECT username FROM users');
$usernames = $stmt->fetchAll(PDO::FETCH_COLUMN);
C. $usernames = $pdo->query('SELECT username FROM users')->fetchColumn();
D. $usernames = $pdo->query('SELECT username FROM users')->fetchAll();
Solution
Step 1: Understand how to fetch all values from a single column
The fetchAll(PDO::FETCH_COLUMN) fetches all rows from the first column into an array.
Step 2: Check each option for correct usage
$stmt = $pdo->query('SELECT username FROM users');
$usernames = $stmt->fetchAll(PDO::FETCH_COLUMN); correctly calls query(), then fetchAll with FETCH_COLUMN to get usernames array. Others misuse fetchAll or fetchColumn.
Final Answer:
$stmt = $pdo->query('SELECT username FROM users');
$usernames = $stmt->fetchAll(PDO::FETCH_COLUMN); -> Option B
Quick Check:
fetchAll(PDO::FETCH_COLUMN) returns array of column values [OK]
Hint: Use fetchAll(PDO::FETCH_COLUMN) to get single column array [OK]
Common Mistakes:
Using fetchColumn() to get all rows instead of one
Not storing query result before fetching
Passing wrong fetch mode to fetch()
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.