gpt4 book ai didi

php - mysql_real_escape_string 和 implode()

转载 作者:行者123 更新时间:2023-11-30 00:20:06 25 4
gpt4 key购买 nike

if (array_key_exists('submit', $_POST)) {   
foreach ($_POST as $key => $value) {
${$key} = mysql_real_escape_string($value);
$imp_1 = implode("' '", array_keys($lunch_days));
$imp_2 = implode("' '", array_keys($dinner_days));
$imp_3 = implode("' '",$hours_dinner);
$imp_4 = implode("' '",$hours_lunch);}
$sql = "INSERT INTO local_eats(..., ...., ...etc.. etc..) VALUES('$...', '$....', '$...', etc.. etc..)";

我的问题是,自从我将 mysql_real_escape_string() 函数添加到我的所有 $_post 变量中后,我无法插入我的四个内爆变量,例如 $ imp_1$imp_2$imp_3$_imp4

最佳答案

首先,我对您的设计有一些建议:

  • 任意将 $_POST 键转换为变量是一个坏主意,如果您有一个 $isAdmin 变量,并且有人将 $isAdmin 作为 post 参数传递,则该变量将被设置
  • 根据提供的查询参数任意定义架构/查询是一个坏主意,如果您有 is_admin 列,他们可以将其作为查询参数传递并设置该字段。
  • 最好通过 PDO 使用准备好的语句,而不是 mysql_real_escape_string

我的建议是使用这样的东西:

if (array_key_exists('submit', $_POST)) {  
$days = array(
'monday',
'tuesday',
... etc...
);

$sth = $dbh->prepare('INSERT INTO local_eats(lunch_monday, lunch_tuesday, ... dinner_monday, ..., open_dinner_monday, etc.) VALUES(:lunch_monday, :lunch_tuesday, ...etc)');

foreach($days as $day) {
if(isset($_POST['lunch_days'][$day])) {
$sth->bindParam(':lunch_' . $day, 1, PDO::PARAM_INT);
} else {
$sth->bindParam(':lunch_' . $day, 0, PDO::PARAM_INT);
}
// Do the above for the other "groups" of fields
}

$sth->execute();
}

这样只能设置某些字段,并且您不会动态创建任何变量。如果您的大部分条目不太可能每天都打开,我还会考虑更改您的架构以拥有单独的日期表。

关于php - mysql_real_escape_string 和 implode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318580/

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