Спасибо !!!!!!!!

ал о инъекции MySQL второго порядка на этой страницеДостаточно ли подготовленных операторов PDO для предотвращения внедрения SQL?.

и это принесло много вопросов оcharset, и я не уверен, что мой код безопасен для инъекции MySQL

В моем коде я никогда не использую кодировку при выполнении запроса,

Я просто делаю

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

Я обнаружил, что есть два разных способаset charset в пдо

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

а также

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

Согласно @ircmaxell ответы по этой ссылкеДостаточно ли подготовленных операторов PDO для предотвращения внедрения SQL?, первый метод должен использоваться для защиты от SQL-инъекций второго порядка ...

Но я имелnever set charset в моих кодах (как показано в первом коде), поэтому у меня есть несколько вопросов

для первого кода, где я не устанавливаю никакой кодировки, что будет набором символов по умолчанию и будет ли это безопасно?это связано с набором символов базы данных, для моей базы данных набор символов (Collation)ut8_general_ci (обнаружил, что в phpmyadmin-> операции)?являетсяutf8 кодировка в сейфе для инъекций второго порядка, т.е.$pdo = new PDO("mysql:host=" . DB_HOST . ";charset=utf8;......); делается работа против всех видов MySQL инъекций?

Ответы на вопрос(1)

Ваш ответ на вопрос