在此先感谢,这是正在发生的事情:
if(isset($_POST['submit']))
{
$var = $_GET['var'];
foreach((array)$_POST['content'] as $area => $contents)
{
$result = 'UPDATE $table SET '.$area.' = "'.mysql_real_escape_string(stripslashes($contents)).'" WHERE var = "'.$_GET['var'].'";';
mysql_query ($result);
}
$query = 'UPDATE $table SET '.
'title = "'.mysql_real_escape_string(stripslashes($_POST["title"])).'", '.
'template = "'.mysql_real_escape_string($_POST["templateid"]).'", '.
'description = "'.mysql_real_escape_string(stripslashes($_POST["description"])).'", '.
'keywords = "'.mysql_real_escape_string(stripslashes($_POST["keywords"])).'" '.
' WHERE var = "'.$_GET['var'].'";';
mysql_query ($query);// or die(mysql_error());
}
我无法让if语句超越for each循环。它不会使用$ query mysql语句更新数据库。它简单地为每个循环内部的所有内容更新表,然后存在。我是否需要做一个If而不是if?我试着查找php条件语句,是否有这样的事情和声明?如:如果帖子提交做这个和这个?这基本上就是我想做的事情,如果帖子提交,请为每个循环执行并执行$ query。
如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
嗯,$_POST['content']
是否定义了?在这种情况下,您可能希望使用print_r($_POST)
开始调试,以查看您获得的所有值。
您可能打算做的是:
foreach ($_POST as $key => $val)
编辑:
你应该真的逃脱$_GET['var']
以及循环中的$area
!逃避所有用户输入,总是!!!
答案 1 :(得分:0)
表名不会显示。还添加一些东西来显示mysql错误消息以帮助调试:
$result = 'UPDATE '.$table.' SET '.$area.' = "'.mysql_real_escape_string(stripslashes($contents)).'" WHERE var = "'.$_GET['var'].'";';
mysql_query ($result) or die(mysql_error());
答案 2 :(得分:0)
尝试添加* ini_set('display_errors',1); *添加脚本的开头以确保错误输出。 并使用* var_dump(mysql_error()); *来显示第二个查询的mysql错误。
还有一个小小的建议。 在$ area上切换以确保传递有效字段:
switch ($area) {
case 'field1': $area='field1'; break;
case 'field2': $area='field2'; break;
default: echo 'No valid field'; continue; break;
}
祝你好运!