PHP有MysqL_real_escape_string()来正确地转义任何可能导致问题的字符.什么是最好的模拟BASH功能的方法?
有没有办法使用bash准备好MysqL语句?这似乎是最好的办法.
我的大多数变量不会(不应该)有特殊字符,但是我给用户完全自由的密码.它可以包括诸如“和”的字符.
我可能正在做多个sql语句,所以我想制作一个接受参数的脚本,然后运行该语句.这是我到目前为止
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')"
显然,如果密码密码中包含一个单引号,这将会失败.
在Bash中,printf可以为您执行转义:
$a=''\''"\;:#[]{}()|&^$@!?,.<>abc123' $printf -v var "%q" "$a" $echo "$var" \'\"\\\;:#\[\]\{\}\(\)\|\&\^\$@\!\?\,\ .\<\>abc123
我会把它留给你来决定是否足够强大.