我已经使用过PDO:
$stmt = $aPDO->prepare("INSERT INTO ".$this->getM_oUser()->getM_sTableName()." (email, hash_pw, hash_key) VALUES (:email, :hash_pw, :hash_key)");
$stmt->bindValue(':email', $this->getM_oUser()->getM_sEmail());
$stmt->bindValue(':hash_pw', $this->getM_oUser()->getM_sHash_pw());
$stmt->bindValue(':hash_key', $this->getM_oUser()->getM_sHash_Key());
$stmt->execute();
我是否还应该使用mysql_real_escape_string()来处理用户输入字符串?谢谢。
答案 0 :(得分:1)
使用带有绑定参数的预处理语句就足够了。您不需要使用mysql_real_escape_string
(即使您需要,也可能无法使用 - 您需要使用MySql连接资源来执行此操作)。
答案 1 :(得分:0)
我会做类似的事情从表名中排除很多无用的字符:
$tableName = '`' . preg_replace('`[^-a-zA-Z0-9_]`', $this->getM_oUser()->getM_sTableName()).'`';
$stmt = $aPDO->prepare("INSERT INTO ".$tableName." (email, hash_pw, hash_key) VALUES (:email, :hash_pw, :hash_key)");