Qual é o conjunto de caracteres padrão para o pdo mysql

Eu estava lendo sobre a injeção MySQL de segunda ordem nesta páginaAs instruções preparadas para DOP são suficientes para impedir a injeção de SQL?.

e trouxe muitas perguntas sobre ocharsete não tenho certeza se meu código é seguro para a injeção do MySQL

No meu código, nunca uso charset ao fazer uma consulta,

Eu simplesmente faço

$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;

Eu descobri que existem duas maneiras diferentes deset acharset em pdo

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

e

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

De acordo com as respostas @ircmaxell neste linkAs instruções preparadas para DOP são suficientes para impedir a injeção de SQL?. o primeiro método deve ser usado para proteger contra injeção SQL de segunda ordem ...

Mas eu tinhanever set acharset nos meus códigos (como mostrado no primeiro código), então eu tenho algumas perguntas

para o primeiro código em que não estou definindo nenhum conjunto de caracteres, qual seria o conjunto de caracteres padrão e seria seguro?está relacionado ao conjunto de caracteres do banco de dados, pois meu conjunto de dados (Collation) éut8_general_ci (descobriu que nas operações phpmyadmin->)?éutf8 charset em cofre para injeção de segunda ordem, isto é$pdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8;......); é feito trabalho contra todos os tipos de injeções mysql?

questionAnswers(1)

yourAnswerToTheQuestion