2016-11-01 2 views
0

私は大きなテーブルを持っています。何らかの理由で の値の一部が値x2のように更新される理由は何ですか?PHPアップデート、いくつかの値を二重に更新する

私のコード:夜の時間を更新するための

if ($source=='editEmployeeHours') { 

    $object=htmlentities($_POST['object'], ENT_QUOTES, "UTF-8"); 
    $period=htmlentities($_POST['period'], ENT_QUOTES, "UTF-8"); 
    $m=htmlentities($_POST['m'], ENT_QUOTES, "UTF-8"); 
    $y=htmlentities($_POST['y'], ENT_QUOTES, "UTF-8"); 
    $date=htmlentities($_POST['date'], ENT_QUOTES, "UTF-8");  
    $records=htmlentities($_POST['records'], ENT_QUOTES, "UTF-8"); 
    include('inc/s.php'); 
$g = null;  
while ($g <= $records){ 
$g++; 
$edithoursday = $personday = $day = null; 
    $edithoursday=htmlentities($_POST['edithoursday'][$g], ENT_QUOTES, "UTF-8"); 
    $personday=htmlentities($_POST['personday'][$g], ENT_QUOTES, "UTF-8"); 
    $day=htmlentities($_POST['day'][$g], ENT_QUOTES, "UTF-8"); 

    if($edithoursday!=''){ 
       $resultd = mysqli_query($conn,"SELECT * FROM timesheets WHERE day='".$day."' AND person_code = '".$personday."' AND object_id = '".$object."' AND period_code='".$period."' AND type='0'"); 
       if (!$resultd){die("Attention! Query to show fields failed.");} 
    if (mysqli_num_rows($resultd)!=0){ 
       $queryied = "UPDATE timesheets SET value='".$edithoursday."' WHERE day='".$day."' AND person_code = '".$personday."' AND object_id = '".$object."' AND period_code='".$period."' AND type='0'"; 
       mysqli_query($conn, $queryied); 
     } 
    } 
} 

     header("Location: "home"); 
     die(0); 

    } 

私は夜変数 と同じコードが、 を持っているが、私は見ていないことを何も悪いことはありますか?

私は長いコードをお詫び申し上げます! );

+0

印刷自分でクエリをエラー見つけて、私の神は、あなたは間違いなくいくつかのグッドプラクティスを使用することができ – Ima

+0

double型の値を持つ更新がどこにあるかチェックします。あなたのコードはSQLインジェクションに対して脆弱です。 – Mikz

+0

@Mikz何行ですか? –

答えて

1

を実行し、このコードを、おそらくあなたは

if ($source == 'editEmployeeHours') 
{ 

    $object = htmlentities($_POST['object'], ENT_QUOTES, "UTF-8"); 
    $period = htmlentities($_POST['period'], ENT_QUOTES, "UTF-8"); 
    $m  = htmlentities($_POST['m'], ENT_QUOTES, "UTF-8"); 
    $y  = htmlentities($_POST['y'], ENT_QUOTES, "UTF-8"); 
    $date = htmlentities($_POST['date'], ENT_QUOTES, "UTF-8"); 
    $records = htmlentities($_POST['records'], ENT_QUOTES, "UTF-8"); 
    include('inc/s.php'); 
    $g  = null; 
    echo "<pre>"; 
    while ($g <= $records) 
    { 
     echo "<br><br>---------------------------------------<br><br>"; 
     $g++; 
     $edithoursday = $personday = $day   = null; 
     $edithoursday = htmlentities($_POST['edithoursday'][$g], ENT_QUOTES, "UTF-8"); 
     $personday = htmlentities($_POST['personday'][$g], ENT_QUOTES, "UTF-8"); 
     $day   = htmlentities($_POST['day'][$g], ENT_QUOTES, "UTF-8"); 

     echo "<pre>"; 
     print_r(array('edithoursday' => $edithoursday, 'personday' => $personday, 'day' => $day)); 
     echo "</pre>"; 
     if ($edithoursday != '') 
     { 
      $q = "SELECT * FROM timesheets WHERE 
      day='" . $day . "' AND 
      person_code = '" . $personday . "' AND 
      object_id = '" . $object . "' AND 
      period_code='" . $period . "' AND 
      type='0'"; 

      echo "<pre>"; 
      echo $q; 
      echo "</pre>"; 

      $resultd = mysqli_query($conn, $q); 
      if (!$resultd) 
      { 
       die("Attention! Query to show fields failed."); 
      } 
      if (mysqli_num_rows($resultd) != 0) 
      { 
       $queryied = "UPDATE timesheets SET " 
        . "value='" . $edithoursday . "' " 
        . "WHERE " 
        . "day='" . $day . "' AND " 
        . "person_code = '" . $personday . "' AND " 
        . "object_id = '" . $object . "' AND " 
        . "period_code='" . $period . "' AND " 
        . "type='0'"; 
       echo "<pre>"; 
       echo $queryied; 
       echo "</pre>"; 
       mysqli_query($conn, $queryied); 
      } 
     } 
    } 
    echo "</pre>"; 
    header("Location: home"); 
    die(0); 
} 
+0

私はいくつかのレコードのために私は1日のために2 values.whenテーブルでは1 = 1 = 2、更新すると1 = 2、更新1 = 2となるので、最終的には2 + 2 = 4となります。私のコードに問題はありませんが、データベースでは、私が知りませんでした同じ日に1レコード以上です!再度、感謝します :) –

関連する問題