2012-02-04 10 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文でデータベースを更新しません。単純に、各ループのfor内部のすべてのテーブルを更新し、存在します。私はしばらくする必要がありますか?そして、私はPHPの条件文を検索しようとしましたが、そのようなものと文がありますか?そのような場合:投稿がこれを行うと、これとこれ?それは本質的に私がやろうとしていることです。投稿が投稿されたら、各ループに対して行い、$クエリを実行します。

詳細情報が必要な場合はお知らせください。

答えて

1

まあ、$_POST['content']ですか?このような場合は、print_r($_POST)でデバッグを開始して、取得したすべての値を表示することができます。

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

編集:あなたは、おそらく行うためのものであることは


そして、あなたは本当に脱出するべきループで$_GET['var']など$areaこと!エスケープすべてのユーザーの入力は、常に!

+0

エスケープを追加します。 content []はテキスト領域の名前です。ただし、for eachループは完全に実行され、テーブルを更新します。 2番目のクエリには決して行きません –

0

テーブル名は表示されません。 ; *エラー出力リレーを確実にするために、スクリプトの開始を追加

$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):また、デバッグを支援するためのmysqlのエラーメッセージを表示するために何かを追加。 * var_dump(mysql_error()); *を使用して、2番目のクエリのmysqlエラーを表示します。

そして小さな提案です。 は、有効なフィールドが渡されていることを確認するために$領域にスイッチの操作を行います。

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

幸運を!

関連する問題