Я не очень разбираюсь в безопасности, но вот объяснение, которое, я надеюсь, поможет вам:
Допустим, у вас есть утверждение типа:
выберите [целое число] из mydb
Представьте, что когда вы его готовите, оператор скомпилирован в байты в нашей воображаемой реализации sql.
01 00 00 23
Opcode for select Prepared bytes number of "mydb"
for your integer
Теперь, когда вы выполните, вы вставите число в пространство, зарезервированное для вашего подготовленного оператора.
Сравните это с тем, что если вы просто используете escape, вы можете вставить туда столько тарабарщины и, возможно, вызвать переполнение памяти, либо какую-то команду bizzare sql, которую они забыли экранировать.