Я пытаюсь преобразовать сайт из MySQLi в PDO. На странице графиков возникла проблема, из-за которой графики не работают после перехода на PDO. Вывод json идентичен, за исключением PDO, вывод json оборачивается внутри неэкранированных двойных кавычек, а затем экранируются все кавычки в данных. Кто-нибудь знает, как изменить запрос PDO, чтобы удалить заключающие в кавычки и, возможно, все внутренние обратные слэши двойных кавычек из выходных данных json?
//MySQLi -----------------------------------------------
$con = mysqli_connect($db_server_address, $db_user_name, $db_password, $db_name) or die("Connection failed: " . mysqli_connect_error());
// Check connection
if (mysqli_connect_errno()) {
echo "ERROR: Failed to connect to database: " . mysqli_connect_error() . "<br/><br/>";
}
$sql = "
SELECT * FROM table
";
$result = mysqli_query($con,$sql);
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
mysqli_close($con);
echo json_encode($data);
//PDO ------------------------------------------
$dsn = "mysql:host=$db_server_ip;dbname=$db_name;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $db_user_name, $db_password, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
$stmt = $pdo->query("
SELECT * FROM table
");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);
echo json_encode($json);
Вывод данных:
//MySQLi Output-----------------------------------------------
[{"week_of":"2018-01-06","weekn":"1","Weekly_Ticket_Count":"8"},{"week_of":"2019-01-05","weekn":"1","Weekly_Ticket_Count":"12"}]
//PDO ------------------------------------------
"[{\"week_of\":\"2018-01-06\",\"weekn\":1,\"Weekly_Ticket_Count\":8},{\"week_of\":\"2019-01-05\",\"weekn\":1,\"Weekly_Ticket_Count\":12}]"