2012-02-04 69 views
0

谢谢你,这里是正在发生的事情:如果后提前提交声明没有得到过去的每个循环

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语句超越每个循环。它不会使用$ query mysql语句更新数据库。它简单地更新表格中每个循环内的所有内容,然后存在。我是否需要做一个If while或else?而我试图查找PHP条件语句,是否有这样的事情和声明?如:如果提交后做这个和这个?这基本上是我想要做的,如果提交后,为每个循环做,并做$查询。

让我知道如果你需要更多的信息。

回答

1

那么,是不是定义为$_POST['content']?在这种情况下,您可能需要使用print_r($_POST)开始调试,以查看您获得的所有值。

什么你可能打算做的是:

foreach ($_POST as $key => $val) 

编辑:
,你应该真的逃脱$_GET['var']以及在循环中的$area!退出所有用户输入,总是!

+0

我将添加转义。 content []是文本区域的名称。然而,对于每个循环来说,完美运行并更新表格。它永远不会到第二个查询 – 2012-02-04 15:52:27

0

表名不会显示。同时添加一些东西给mysql的错误信息来帮助调试:

$result = 'UPDATE '.$table.' SET '.$area.' = "'.mysql_real_escape_string(stripslashes($contents)).'" WHERE var = "'.$_GET['var'].'";'; 
mysql_query ($result) or die(mysql_error()); 
0

尝试,并添加*的ini_set(“display_errors设置”,1); *添加脚本的开始,以确保错误输出中。 并使用* var_dump(mysql_error()); *显示第二个查询的mysql错误。

还有一个小建议。 做$区域切换,以保证有效字段传递:

switch ($area) { 
    case 'field1': $area='field1'; break; 
    case 'field2': $area='field2'; break; 
    default: echo 'No valid field'; continue; break; 
} 

好运!