这是我对其进行清理后代码的样子:
$old_menu_names = explode(',',
preg_replace(
"|\[(.+)\]|", //Find the part in between the square brackets
"$1", //And extract it
trim(
$_POST['menuname'] //From the trimmed menuname.
)
)
);
$new_menu_names = explode(',',
preg_replace(
"|\[(.+)\]|",
"$1",
trim(
$_POST['editmainmenu']
)
)
);
mysql_connect("localhost", "root", "root");
mysql_select_db("test");
foreach ($old_menu_names as $key => $old_name)
{
$new_name = mysql_real_escape_string($new_menu_names[$key]);
$old_name = mysql_real_escape_string($old_menu_names[$key]);
mysql_query("UPDATE `test` SET `menuname` = '$new_name' WHERE menuname = '$old_name'")
or die('Error' . mysql_error());
echo "Updated";
}
?>
我做了什么: h2>
变量命名 - 根据变量的名称命名变量,不要使用晦涩的名称,如$arr或$arr1,在较大的应用程序中,您很快就会丢失。
如果一个语句很长,很复杂,并且/或者包含嵌套括号,请不要害怕将其拆分,以便更容易理解。
评论,如果没有立即理解某些内容,请随意添加评论,向任何人(包括您自己在几个月内)解释代码的目的。
不要在不需要的地方添加括号。看看我写的新查询。
您没有在foreach循环中声明旧名称,因此出现了空的错误。
简而言之,我建议你阅读一本关于最佳实践和编程概念的好书。