0

In essence, my JSON is printing NULL for fields that contain a special character.

I have read around the subject and followed the duplicate question, as well as other threads, one post in particular highlighted that I need to do the following:

If you're using mysqli, you can call set_charset(): $mysqli->set_charset('utf8mb4'); // object oriented style mysqli_set_charset($link, 'utf8mb4'); // procedural style If you're stuck with plain mysql but happen to be running PHP ≥ 5.2.3, you can call mysql_set_charset. If the driver does not provide its own mechanism for setting the connection character set, you may have to issue a query to tell MySQL how your application expects data on the connection to be encoded: SET NAMES 'utf8mb4'.

I have done this as documented in the openConnection() function as below in my connection script:

<?php

ini_set('display_errors', 1); 
ini_set('log_errors',1); 
error_reporting(E_ALL); 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

class MySQLDao{

var $dbhost = null;
var $dbuser = null;
var $dbpass = null;
var $conn = null;
var $dbname = null;
var $result = null;

public function __construct(){
    $this->dbhost = Conn::$dbhost;
    $this->dbuser = Conn::$dbuser;
    $this->dbpass = Conn::$dbpass;
    $this->dbname = Conn::$dbname;
}

public function openConnection()
{

    $this->conn = new mysqli($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname);
    if (mysqli_connect_errno())
        echo new Exception("Could not establish connection with database");
mysqli_set_charset($this->conn, "utf8mb4");
}

I have been through my database in phpMyAdmin and converted all my collations to ut8mb4_bin. I have put in the mysql_set_chars line as suggested, and I have also changed all of my tables to utf8mb4 through this type of command ALTER TABLE teams CHANGE name name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

These are my database setting from phpMyAdmin:

My web server details are Apache Database client version: libmysql - 5.0.77 PHP extension: mysqli Documentation PHP version: 5.3.3

Yet none of this has fixed my problem.

My character_set_server is displaying as latin1, could this be the issue?

+--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | latin1 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | latin1_swedish_ci | +--------------------------+--------------------+

I am at a loss at what else to try.

RDowns
  • 651
  • 1
  • 10
  • 35

0 Answers0