Bird
Raised Fist0
PHPprogramming~10 mins

PDO connection setup 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 create a new PDO instance for a MySQL database.

PHP
<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = '';
try {
    $pdo = new PDO([1], $username, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
?>
Drag options to blanks, or click blank then click option'
A$dsn
Bdsn
C'dsn'
D$database
Attempts:
3 left
💡 Hint
Common Mistakes
Passing the DSN as a string literal instead of the variable.
Using an undefined variable name.
2fill in blank
medium

Complete the code to set the PDO error mode to throw exceptions.

PHP
<?php
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, [1]);
?>
Drag options to blanks, or click blank then click option'
APDO::ERRMODE_EXCEPTION
BPDO::ERRMODE_SILENT
CPDO::ERRMODE_WARNING
DPDO::ERRMODE_FATAL
Attempts:
3 left
💡 Hint
Common Mistakes
Using PDO::ERRMODE_SILENT which hides errors.
Using a non-existent constant like PDO::ERRMODE_FATAL.
3fill in blank
hard

Fix the error in the DSN string to connect to a PostgreSQL database named 'mydb'.

PHP
<?php
$dsn = 'pgsql:host=localhost;dbname=[1]';
$pdo = new PDO($dsn, $user, $pass);
?>
Drag options to blanks, or click blank then click option'
Atestdb
Bpostgres
Cmydb
Ddatabase
Attempts:
3 left
💡 Hint
Common Mistakes
Leaving the placeholder unchanged.
Using a wrong database name.
4fill in blank
hard

Fill both blanks to create a PDO connection with UTF-8 charset and persistent connection enabled.

PHP
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;[1]';
$options = [
    PDO::ATTR_PERSISTENT => [2]
];
$pdo = new PDO($dsn, $user, $pass, $options);
?>
Drag options to blanks, or click blank then click option'
Acharset=utf8mb4
Btrue
Cfalse
Dcharset=utf8
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'charset=utf8' instead of 'utf8mb4'.
Setting persistent connection to false or omitting it.
5fill in blank
hard

Fill all three blanks to prepare a PDO statement, bind a parameter, and execute it.

PHP
<?php
$stmt = $pdo->[1]('SELECT * FROM users WHERE id = :id');
$stmt->[2](':id', $userId, PDO::PARAM_INT);
$result = $stmt->[3]();
?>
Drag options to blanks, or click blank then click option'
Aprepare
BbindValue
Cexecute
Dquery
Attempts:
3 left
💡 Hint
Common Mistakes
Using query() instead of prepare().
Using bindParam() instead of bindValue() (both work but bindValue is simpler here).
Forgetting to execute the statement.

Practice

(1/5)
1. What is the main purpose of using PDO in PHP?
easy
A. To connect to databases securely and easily
B. To create HTML pages
C. To handle user sessions
D. To send emails

Solution

  1. Step 1: Understand PDO's role

    PDO is a PHP extension designed to connect to databases in a secure and consistent way.
  2. Step 2: Compare other options

    Other options like creating HTML, handling sessions, or sending emails are unrelated to PDO.
  3. Final Answer:

    To connect to databases securely and easily -> Option A
  4. Quick Check:

    PDO = Secure database connection [OK]
Hint: PDO is for database connections only [OK]
Common Mistakes:
  • Confusing PDO with HTML or session functions
  • Thinking PDO sends emails
  • Assuming PDO is for file handling
2. Which of the following is the correct way to create a new PDO connection to a MySQL database named 'testdb' on localhost with username 'user' and password 'pass'?
easy
A. $pdo = new PDO('host=localhost;dbname=testdb', 'user', 'pass');
B. $pdo = new PDO('mysql:localhost;dbname=testdb', 'user', 'pass');
C. $pdo = new PDO('mysql://localhost/testdb', 'user', 'pass');
D. $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass');

Solution

  1. Step 1: Check DSN format for MySQL

    The correct DSN format is 'mysql:host=hostname;dbname=database_name'.
  2. Step 2: Verify options

    $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); uses the correct DSN format with host and dbname separated by semicolon and includes username and password.
  3. Final Answer:

    $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); -> Option D
  4. Quick Check:

    DSN format = 'mysql:host=...;dbname=...' [OK]
Hint: DSN must start with 'mysql:' and use semicolons [OK]
Common Mistakes:
  • Omitting 'mysql:' prefix
  • Using slashes instead of semicolons
  • Missing 'host=' keyword
3. What will be the output of this PHP code snippet?
$dsn = 'mysql:host=localhost;dbname=testdb';
try {
    $pdo = new PDO($dsn, 'user', 'wrongpass');
    echo 'Connected';
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
medium
A. Connected
B. Connection failed: SQLSTATE[HY000] [1045] Access denied for user 'user'@'localhost' (using password: YES)
C. Syntax error
D. No output

Solution

  1. Step 1: Analyze connection attempt

    The code tries to connect with username 'user' but a wrong password 'wrongpass'.
  2. Step 2: Understand error handling

    PDO throws a PDOException on failure, caught by catch block, which prints the error message.
  3. Final Answer:

    Connection failed: SQLSTATE[HY000] [1045] Access denied for user 'user'@'localhost' (using password: YES) -> Option B
  4. Quick Check:

    Wrong password triggers exception message [OK]
Hint: Wrong password triggers exception message [OK]
Common Mistakes:
  • Expecting 'Connected' despite wrong password
  • Ignoring try-catch block
  • Assuming no output on failure
4. Identify the error in this PDO connection code:
try {
    $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Error: ' . $e->getMessage();
}
medium
A. Missing DSN string
B. Incorrect error mode constant
C. No error, code is correct
D. Missing semicolon after setAttribute

Solution

  1. Step 1: Review DSN and credentials

    The DSN string is correct and includes host and dbname properly.
  2. Step 2: Check error mode setting

    PDO::ATTR_ERRMODE and PDO::ERRMODE_EXCEPTION are valid constants to enable exceptions on errors.
  3. Step 3: Verify syntax

    All lines end with semicolons and try-catch is properly structured.
  4. Final Answer:

    No error, code is correct -> Option C
  5. Quick Check:

    Correct DSN and error mode = no error [OK]
Hint: Check constants and syntax carefully [OK]
Common Mistakes:
  • Using wrong error mode constants
  • Forgetting semicolons
  • Miswriting DSN string
5. You want to connect to a MySQL database using PDO and ensure that any connection error throws an exception. Which code snippet correctly sets up the connection and error handling?
hard
A. try { $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); }
B. try { $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); } catch (Exception $e) { echo 'Error'; }
C. $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
D. try { $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); } catch (PDOException $e) { echo 'Error: ' . $e->getMessage(); } $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Solution

  1. Step 1: Check error mode setting

    Setting PDO::ATTR_ERRMODE to PDO::ERRMODE_EXCEPTION ensures exceptions on errors.
  2. Step 2: Verify try-catch placement

    The error mode must be set inside the try block before any database operations, so exceptions are caught properly.
  3. Step 3: Analyze options

    try { $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } correctly sets error mode inside try and catches PDOException with detailed message.
  4. Final Answer:

    try { $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } -> Option A
  5. Quick Check:

    Error mode exception + try-catch = try { $pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } [OK]
Hint: Set error mode to exception inside try block [OK]
Common Mistakes:
  • Setting error mode outside try block
  • Using wrong error mode constants
  • Catching wrong exception type
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