PHP ¿Cuál es el juego de caracteres predeterminado para pdo mysql

Estaba leyendo sobre la inyección de MySQL de segundo orden en esta páginaLas declaraciones preparadas por PDO son suficientes para evitar la inyección de SQL?.

y trajo muchas preguntas sobre elcharset, y no estoy seguro de si mi código es seguro para la inyección de MySQL

En mi código, nunca uso charset mientras hago una consulta,

Simplemente hago

$pdo = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASSWORD, [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_PERSISTENT => false]);
$stmt = $pdo->prepare("SELECT * FROM keywords  WHERE keyword_name = ? || keyword_name = ?");
$stmt->execute(["hello","world"]);
rows = $stmt->fetchAll();
// show the data on webpage
$pdo = null;

Encontré que hay dos formas diferentes deset elcharset en pdo

$pdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8;......);

$pdo->exec("set names utf8");

Según las respuestas de @ircmaxell en este enlaceLas declaraciones preparadas por PDO son suficientes para evitar la inyección de SQL?. el primer método debe usarse para proteger contra la inyección SQL de segundo orden ...

Pero tuvenever set elcharset en mis códigos (como se muestra en el primer código), así que tengo algunas preguntas

para el primer código donde no estoy configurando ningún conjunto de caracteres, ¿cuál sería el conjunto de caracteres predeterminado y sería seguro? está relacionado con el conjunto de caracteres de la base de datos, para mi conjunto de caracteres de la base de datos (Colación) esut8_general_ci (¿encontrado en phpmyadmin-> operaciones)?esutf8 juego de caracteres en caja fuerte para inyección de segundo orden, es decir,$pdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8;......); ¿se ha realizado un trabajo contra todo tipo de inyecciones mysql?

Respuestas a la pregunta(1)

Su respuesta a la pregunta