Here is the table :
//Creating The Table.
CREATE TABLE `locations` (
`location` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`id` INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
//Inserting 2 Values To The Table , One Of Them Containing Special Char.
INSERT INTO `locations` (`location`, `id`) VALUES ('New York', NULL), ('Alfonso Castaٌeda', NULL);
//Connecting To The DB & Setting utf-8
$pdo = new PDO($dsn , $user , $password , array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
In the PHP file which is utf-8 encoding:
<meta charset="UTF-8">
ini_set('default_charset','utf-8');
header ('Content-type: text/html; charset=utf-8');
$charset = $pdo->prepare('SET CHARSET "utf8"');
$charset->execute();
$query = 'Alfonso Castaٌeda';
utf8_encode($query);
$stmt = $pdo->prepare('SELECT * FROM locations where location = :loc").'"');
$stmt->execute(array('loc' => $query));
$values = $stmt->fetchAll();
var_dump($values);
The printed code on running the php file:
array(0) { }
But when I execute this query on PHPmyAdmin on my localhost:
SELECT * FROM locations where location = "Alfonso Castaٌeda"
I get :
+------------------------+
location id
Alfonso Castaٌeda 2
+------------------------+