1

I am trying to learn about PDOs so I can migrate away from using mysqli functions but I can't seem to get the DSN right when connecting to the database. I don't know what charset to use. Is it something that I determine in phpmyadmin or is it something that is already set and I have to find? Not sure.

I have a MySQL database set up on a XAMPP program that I am trying to connect to. Below is my code from my db.php file and the full error message.

//  CREATE PDO OBJECT WITH CONSTRUCTOR
$db = new PDO('mysql:host=localhost;dbname=phpdemo;charset=utf8', 'root', '');

//  SET ATTRIBUTE RELATED TO ERROR HANDLING FOR SECURITY
$db -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$fb -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2019] Unknown character set in C:\xampp\htdocs\PHP\PDO Lab\includes\db.php:3 Stack trace: #0 C:\xampp\htdocs\PHP\PDO Lab\includes\db.php(3): PDO->__construct('mysql:host=loca...', 'root', '') #1 C:\xampp\htdocs\PHP\PDO Lab\includes\header.php(6): include_once('C:\xampp\htdocs...') #2 C:\xampp\htdocs\PHP\PDO Lab\new_user.php(2): include_once('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\PHP\PDO Lab\includes\db.php on line 3

Edit: I have tried using utf8mb4 which results in the same error.

Edit2: I just realized that I don't get any errors when I open my db.php file. I do get errors when I open my new_user.php file who's only code is "include('db.php');"

Samuel Cole
  • 521
  • 6
  • 24
  • 1
    Possible duplicate of [when initializing PDO - should I do: charset=UTF8 or charset=UTF8MB4?](https://stackoverflow.com/questions/31660005/when-initializing-pdo-should-i-do-charset-utf8-or-charset-utf8mb4) – zod Jun 22 '17 at 21:43
  • From phpmyadmin or mysql command line, run: show character set like 'utf%'; What do you get? – gview Jun 22 '17 at 22:04
  • The result of that command was utf8, utf8mb4, utf16, utf16le, utf32 – Samuel Cole Jun 23 '17 at 15:36

0 Answers0