Вы должны защищать не только от внедрения SQL, но и от внедрения оболочки. Возможно, вы захотите записать запрос (после очистки любых динамических частей) в файл, а затем перенаправить этот файл в mysql, вместо того, чтобы надеяться, что запрос не сломает оболочку. Рассмотрим:
PARAM="name'\"; rm -rf / ; echo 'pwn3d U"
став
mysql my_db -B -N -e "select id from Table where name='name'"; rm -rf / ; echo 'pwn3d U'
или
command 1: mysql my_db -B -N -e "select id from Table where name='name'"
command 2: rm -rf /
command 3: echo 'pwn3d U'
Вместо этого сделайте что-то вроде:
cat <<EOT > query.sql
select .... blah blaah blah .... sanitized query here
EOT
mysql my_db -B -N < query.sql
Это предотвратит появление любых указанных пользователем данных внутри самой команды оболочки, предотвратит как минимум один уровень уязвимости внедрения. Но тогда вам все равно придется решать проблему внедрения SQL.