gpt4 book ai didi

php - Mysql 数据在选择列表中的单引号后被截断

转载 作者:行者123 更新时间:2023-11-30 23:13:07 25 4
gpt4 key购买 nike

我在 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'");

是否有可能表单输入没有被转义?

最佳答案

假设您已经检查了 $_POST key=>value 对并确认正在传递预期值,我认为您上面的代码可能会取消您的 'mysqli_real_escape_string 的影响' 转义字符,通过在双引号 "$value" 中再次插入它们......两次!然后再次插入 "$implodeArray"

尝试:

foreach ($array as $key => $value) {
$value = "'".$value."'";
$updates[] = "$key = ".$value;
}

$implodeArray = implode(', ', $updates);
$id=$_SESSION['Userid'];

$query = ("UPDATE Database
SET ".$implodeArray."
WHERE Userid='$id'");

希望对你有帮助

关于php - Mysql 数据在选择列表中的单引号后被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19086269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com