Bird
Raised Fist0
PHPprogramming~10 mins

Fetch modes and styles in PHP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to fetch a row as an associative array using PDO.

PHP
<?php
$stmt = $pdo->query('SELECT * FROM users');
$row = $stmt->fetch([1]);
print_r($row);
?>
Drag options to blanks, or click blank then click option'
APDO::FETCH_BOTH
BPDO::FETCH_NUM
CPDO::FETCH_ASSOC
DPDO::FETCH_OBJ
Attempts:
3 left
💡 Hint
Common Mistakes
Using PDO::FETCH_OBJ returns an object, not an array.
2fill in blank
medium

Complete the code to fetch all rows as objects using PDO.

PHP
<?php
$stmt = $pdo->query('SELECT * FROM products');
$rows = $stmt->fetchAll([1]);
foreach ($rows as $product) {
    echo $product->name . "\n";
}
?>
Drag options to blanks, or click blank then click option'
APDO::FETCH_OBJ
BPDO::FETCH_ASSOC
CPDO::FETCH_NUM
DPDO::FETCH_BOTH
Attempts:
3 left
💡 Hint
Common Mistakes
Using PDO::FETCH_ASSOC returns arrays, not objects.
3fill in blank
hard

Fix the error in the code to fetch a numeric array from the database.

PHP
<?php
$stmt = $pdo->query('SELECT id, price FROM items');
$row = $stmt->fetch([1]);
echo $row[0] . ' costs ' . $row[1];
?>
Drag options to blanks, or click blank then click option'
APDO::FETCH_BOTH
BPDO::FETCH_OBJ
CPDO::FETCH_ASSOC
DPDO::FETCH_NUM
Attempts:
3 left
💡 Hint
Common Mistakes
Using PDO::FETCH_ASSOC causes $row[0] to be undefined.
4fill in blank
hard

Fill both blanks to fetch rows as both numeric and associative arrays.

PHP
<?php
$stmt = $pdo->query('SELECT username, email FROM members');
$row = $stmt->fetch([1] | [2]);
print_r($row);
?>
Drag options to blanks, or click blank then click option'
APDO::FETCH_ASSOC
BPDO::FETCH_OBJ
CPDO::FETCH_NUM
DPDO::FETCH_BOTH
Attempts:
3 left
💡 Hint
Common Mistakes
Using PDO::FETCH_OBJ does not provide array keys.
5fill in blank
hard

Fill all three blanks to fetch rows as objects and access a property.

PHP
<?php
$stmt = $pdo->query('SELECT id, title FROM books');
$rows = $stmt->fetchAll([1]);
foreach ($rows as [2]) {
    echo [3]->title . "\n";
}
?>
Drag options to blanks, or click blank then click option'
APDO::FETCH_ASSOC
B$book
C$b
DPDO::FETCH_OBJ
Attempts:
3 left
💡 Hint
Common Mistakes
Using PDO::FETCH_ASSOC returns arrays, so ->title would cause error.

Practice

(1/5)
1. Which PHP PDO fetch mode returns each row as an associative array with column names as keys?
easy
A. PDO::FETCH_OBJ
B. PDO::FETCH_NUM
C. PDO::FETCH_ASSOC
D. PDO::FETCH_COLUMN

Solution

  1. Step 1: Understand fetch modes

    PDO::FETCH_ASSOC returns rows as associative arrays with column names as keys.
  2. Step 2: Compare with other modes

    PDO::FETCH_NUM returns numeric arrays, PDO::FETCH_OBJ returns objects, PDO::FETCH_COLUMN returns a single column value.
  3. Final Answer:

    PDO::FETCH_ASSOC -> Option C
  4. Quick Check:

    Associative array = PDO::FETCH_ASSOC [OK]
Hint: Associative arrays use PDO::FETCH_ASSOC for column-name keys [OK]
Common Mistakes:
  • Confusing PDO::FETCH_NUM with associative arrays
  • Using PDO::FETCH_OBJ when array is needed
  • Thinking PDO::FETCH_COLUMN returns full rows
2. Which of the following is the correct syntax to fetch a single row as an object using PDO?
easy
A. $stmt->fetch(PDO::FETCH_OBJ);
B. $stmt->fetch(PDO::FETCH_ASSOC);
C. $stmt->fetchAll(PDO::FETCH_OBJ);
D. $stmt->fetchColumn();

Solution

  1. Step 1: Identify fetch method for single row as object

    fetch() returns one row; PDO::FETCH_OBJ returns it as an object.
  2. Step 2: Check other options

    fetchAll() returns all rows, fetchColumn() returns a single column value, fetch(PDO::FETCH_ASSOC) returns an associative array.
  3. Final Answer:

    $stmt->fetch(PDO::FETCH_OBJ); -> Option A
  4. Quick Check:

    Single row object = fetch(PDO::FETCH_OBJ) [OK]
Hint: Use fetch(PDO::FETCH_OBJ) for one row as object [OK]
Common Mistakes:
  • Using fetchAll() when only one row is needed
  • Using fetchColumn() to get full row
  • Confusing FETCH_ASSOC with FETCH_OBJ
3. What will be the output of the following PHP code?
$stmt = $pdo->query('SELECT id, name FROM users LIMIT 1');
$row = $stmt->fetch(PDO::FETCH_NUM);
echo $row[0] . ', ' . $row[1];
medium
A. id, name
B. 1, Alice
C. Array, Array
D. Error: Undefined index

Solution

  1. Step 1: Understand PDO::FETCH_NUM

    fetch(PDO::FETCH_NUM) returns a numeric array with column values indexed 0,1,...
  2. Step 2: Analyze echo statement

    $row[0] is the first column (id), $row[1] is the second column (name). Assuming first user has id=1 and name='Alice', output is '1, Alice'.
  3. Final Answer:

    1, Alice -> Option B
  4. Quick Check:

    Numeric array indexes = 0,1 values [OK]
Hint: FETCH_NUM returns numeric keys, use indexes 0,1 for columns [OK]
Common Mistakes:
  • Expecting column names as keys with FETCH_NUM
  • Using associative keys with numeric array
  • Assuming fetchColumn returns full row
4. Identify the error in this PHP code snippet that fetches all user names as a single column array:
$stmt = $pdo->query('SELECT name FROM users');
$names = $stmt->fetch(PDO::FETCH_COLUMN);
print_r($names);
medium
A. print_r cannot print arrays
B. PDO::FETCH_COLUMN is invalid fetch mode
C. Query should select id, not name
D. fetch() returns only one value, should use fetchAll()

Solution

  1. Step 1: Understand fetch() vs fetchAll()

    fetch() returns a single row or value, fetchAll() returns all rows.
  2. Step 2: Check usage of FETCH_COLUMN

    FETCH_COLUMN fetches a single column value per row; to get all names, fetchAll(PDO::FETCH_COLUMN) is needed.
  3. Final Answer:

    fetch() returns only one value, should use fetchAll() -> Option D
  4. Quick Check:

    fetchAll(PDO::FETCH_COLUMN) gets all column values [OK]
Hint: Use fetchAll(PDO::FETCH_COLUMN) to get all values of one column [OK]
Common Mistakes:
  • Using fetch() instead of fetchAll() for multiple rows
  • Thinking FETCH_COLUMN fetches all rows automatically
  • Misunderstanding print_r usage
5. You want to fetch all rows from a database as objects but only include rows where the 'active' column is true. Which PHP code snippet correctly applies this filter using fetch modes and styles?
hard
A. $rows = $stmt->fetchAll(PDO::FETCH_OBJ); $activeRows = array_filter($rows, fn($r) => $r->active);
B. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($rows as $r) { if ($r['active']) echo $r; }
C. $rows = $stmt->fetchAll(PDO::FETCH_COLUMN); $activeRows = array_filter($rows, fn($r) => $r->active);
D. $rows = $stmt->fetch(PDO::FETCH_OBJ); while ($rows->active) { echo $rows; }

Solution

  1. Step 1: Fetch all rows as objects

    fetchAll(PDO::FETCH_OBJ) returns an array of objects, each representing a row.
  2. Step 2: Filter rows where 'active' is true

    array_filter with a callback checks the 'active' property on each object, keeping only those with true.
  3. Step 3: Check other options

    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($rows as $r) { if ($r['active']) echo $r; } uses associative arrays but does not collect filtered rows properly; $rows = $stmt->fetchAll(PDO::FETCH_COLUMN); $activeRows = array_filter($rows, fn($r) => $r->active); uses FETCH_COLUMN which returns single column values, not objects; $rows = $stmt->fetch(PDO::FETCH_OBJ); while ($rows->active) { echo $rows; } misuses fetch() and while loop.
  4. Final Answer:

    $rows = $stmt->fetchAll(PDO::FETCH_OBJ); $activeRows = array_filter($rows, fn($r) => $r->active); -> Option A
  5. Quick Check:

    fetchAll(PDO::FETCH_OBJ) + array_filter for property check [OK]
Hint: Use fetchAll(PDO::FETCH_OBJ) then array_filter by property [OK]
Common Mistakes:
  • Using fetch() instead of fetchAll() for multiple rows
  • Using FETCH_COLUMN when objects are needed
  • Trying to filter before fetching all rows
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard