У PHP есть mysql_real_escape_string()
, чтобы правильно избежать любых символов, которые могут вызвать проблемы. Каков наилучший способ имитировать эту функциональность для BASH?
Есть ли способ сделать подготовленные операторы mysql с помощью BASH? Кажется, это лучший способ.
Большинство моих переменных не будут (не должны) иметь специальные символы, однако я предоставляю пользователю полную свободу для их пароля. Он может содержать символы типа "и".
Я могу делать несколько операторов SQL, поэтому я хочу сделать script, который принимает параметры, а затем запускает оператор. Это то, что у меня есть до сих пор:
doSQL.sh:
#!/bin/sh
SQLUSER="root"
SQLPASS="passwor339c"
SQLHOST="localhost"
SQL="$1"
SQLDB="$2"
if [ -z "$SQL" ]; then echo "ERROR: SQL not defined"; exit 1; fi
if [ -z "$SQLDB" ]; then SQLDB="records"; fi
echo "$SQL" | mysql -u$SQLUSER -p$SQLPASS -h$SQLHOST $SQLDB
и пример с использованием указанной команды:
example.sh:
PASSWORD=$1
doSQL "INSERT INTO active_records (password) VALUES ('$PASSWORD')"
Очевидно, что это не сработает, если пароль пароля содержит в себе одну цитату.