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
,{ {1}},$imp_3
。
答案 0 :(得分:0)
首先,我对您的设计提出了一些建议:
我的建议是使用这样的东西:
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();
}
这样只能设置某些字段,并且您不会动态创建任何变量。如果您的大多数参赛作品不太可能每天都开放,我也会考虑更改您的架构以设置单独的日期表。