这是多余的PHP mysqli_real_escape_string()与正则表达式

时间:2017-04-24 22:17:24

标签: php mysql

我有一个php脚本,它接受用户输入并将其插入MySQL数据库。我想用插入脚本实现一些功能,a)确保只捕获可接受的字符,b)防止注入SQL

我有一个像这样的表单元素:

<input class="form-control" id="mrn" name="mrn" type="text" maxlength="17">

然后我在php脚本中有以下内容:

// Gather the posted data into local variables
$mrn_demographics = mysqli_real_escape_string($db_connect,preg_replace('/[^a-zA-Z0-9]/', '', $_POST['mrn']));

// Form data error handling
if($mrn_demographics == "" ){
echo "The form submission is missing data.";   
} else {
// End form data error handling
$sql = "INSERT INTO nys_demographics (
    mrn
)
VALUES('$mrn_demographics')";
}

这是否达到了阻止SQL注射的能力,并且使用mysqli_real_escape_string是多余的,因为我也使用regex来捕获我想要的东西,这是alpha - 数字字符。

0 个答案:

没有答案