我在 Mysql 数据库中有一些包含单引号 (') 的部件号,例如 1234'xyz。我有一个带有相当长的表单的 HTML 页面,其中包括一个选择列表,该列表将使用单引号正确显示零件编号。但是,在表单 POST 之后,如果部件号包含单引号,则显示该部件号,以便截断单引号后的所有字符。在上述情况下,零件编号将显示 1234。
这就是我转义表单输入并发布表单的方式:
array_walk_recursive( $_POST, 'mysqli_real_escape_string' ); //escape the array
$array = array_filter($_POST); //remove empty values from the array
//---- convert key/values to string to insert as column names/values to insert
foreach ($array as $key => $value) {
$value = "'$value'";
$updates[] = "$key = $value";
}
$implodeArray = implode(', ', $updates);
$id=$_SESSION['Userid'];
$query = ("UPDATE Database
SET $implodeArray
WHERE Userid='$id'");
表单输入是否有可能没有被转义?