我将数据保存到mysql数据库中,这些将是不同的选项,而不是将它们放在自己的列中,我试图将它们保存在同一个数据库中。
所以像mysql中的表面看起来像:草,路面,停机坪 - 我可以获得要显示的数据,但在添加新选项或删除选项后,我无法出于某种原因将其保存。
编辑 - 现在正在运行,我将它转发到此处,以便其他人需要帮助!谢谢
添加:
$surface = mysql_real_escape_string($_POST['surface']);
$array = explode(',',$setQuery['Surface']);
$new_array = implode(',',$array).','.$surface;
$saveSettings = mysql_query("UPDATE `settings` SET Surface = '$new_array' WHERE id = '1'");
删除:
$surface = mysql_real_escape_string($_GET['s']);
$array = explode(',',$setQuery['Surface']);
unset($array[$surface]);
$new_array = implode(',',$array);
$saveSettings = mysql_query("UPDATE `settings` SET Surface = '$new_array' WHERE id = '1'");
感谢您的帮助 问候
答案 0 :(得分:1)
使用for
循环将数组构建为以逗号分隔的字符串,将错误的路径发送给您。
这里正确的做法是使用PHP内置的implode()
来构建数组中的字符串:
$new_array = implode(",", $array);
我还注意到,当add
方法从$_POST['s']
读取时,您的delete
方法会从$_GET['s']
读取输入。如果这是一个问题,请检查它们之间的一致性。
但是,在任何一种情况下,都必须调用mysql_real_escape_string()
以正确地逃避SQL注入。在将数组添加到数组中并从数组中删除并调用implode()
之后,最好在将其插入SQL字符串之前完成。
// All changes add/del made to array already...
$new_array = implode(",", $array);
$new_array = mysql_real_escape_string($new_array);
$saveSettings = mysql_query("UPDATE `settings` SET Surface = '$new_array' WHERE id = '1'");
// Use error handling methods:
if (!$saveSettings) {
// Something went wrong
echo mysql_error();
}