2017-08-12 12 views
1

更新と挿入クエリが機能していないため、現在選択されていません。ここ更新と挿入クエリがPHPから機能していません

は、以下の私のコードは、エラーで私を助けてください...

<?php 
    if(isset($_POST['save'])){ 
     $exam_type=$_POST['exam_type']; 
     $exam_from=$_POST['exam_from']; 
     $exam_to=$_POST['exam_to']; 
     $total_points=$_POST['total_points']; 
     $passing_grade=$_POST['passing_grade']; 
     $time_limit=$_POST['hrs']*360 + $_POST['min']*60; 
     $cid=$_GET['cid']; 

     $sql = $con->prepare("UPDATE new_oes.exam" 
     . " SET exam_type=?,exam_from =?, exam_to=?," 
     . "modified_by=?,passing_score=?, time_limit=?,passing_grade=? " 
     . "WHERE exam_type = ? AND cid =? "); 

     $sql->execute(array($exam_type, $exam_from, $exam_to, $username, 
     $total_points, $time_limit, $passing_grade, $exam_type,$cid)) or die(mysqli_error($con)); 

     // echo $result1; 
     // $this->query($sql); 
     if(mysqli_affected_rows($con)>0){ 
      echo "<script type='text/javascript'>alert('Exam Updated!!!')</script>"; 
      exit; 
     } else{ 
      echo "An error occurred, try again later!!!"; 
     } 
    } 
?> 

です!

注:クエリはphpmyadminの

+0

このmysqliのである:私はあなたがこのように実行する前に、プレースホルダにパラメータをバインドしたいと思う - 私はそれがより一般的にPDOで行われ、引数として配列を割り当てるように実行呼び出しを見ているか不明でしたまたはPDO? – RamRaider

+1

$ usernameはどこに設定されていますか? –

+0

@NigelRen $ usernameはこのコードの前に設定されたセッションからのものです。 ifステートメントにも設定するようアドバイスしますか? – akinlex

答えて

1

から取り組んでいる、それはだ$usernameが定義されていないようです、あなたは通常、あなたが前にSQL文をprepareしようとしてからの戻り値をチェックしたいと思う$username

$username = "SOME_ONE"; // maybe you saved it in $_SESSION or its in $_POST 
0

を定義する必要がありますクエリを実行しようとしました。

<?php 
    try{ 
     if(isset( 
      $_POST['save'], 
      $_POST['exam_type'], 
      $_POST['exam_from'], 
      $_POST['exam_to'], 
      $_POST['total_points'], 
      $_POST['passing_grade'], 
      $_POST['hrs'], 
      $_GET['cid'], 
      $_GET['username']) 
     ){ 

      $exam_type=$_POST['exam_type']; 
      $exam_from=$_POST['exam_from']; 
      $exam_to=$_POST['exam_to']; 
      $total_points=$_POST['total_points']; 
      $passing_grade=$_POST['passing_grade']; 
      $time_limit=$_POST['hrs']*360 + $_POST['min']*60; 
      $cid=$_GET['cid']; 
      $username=$_GET['username']; 

      $stmt = $con->prepare("update `new_oes`.`exam` 
       set `exam_type`=?, `exam_from` =?, `exam_to`=?, `modified_by`=?, `passing_score`=?, `time_limit`=?, `passing_grade`=? 
       where `exam_type` = ? and `cid` =? "); 

      if($stmt){ 
       /* 
        Assumed to be that all parameters are strings apart from $cid which I took to be an integer 
        Change each letter in first parameter of `bind_param` accoring to whether the input variable is 
        either string or numeric. 

        s=string 
        i=integer 
       */ 

       $stmt->bind_param('ssssssssi', $exam_type, $exam_from, $exam_to, $username, $total_points, $time_limit, $passing_grade, $exam_type, $cid); 
       $stmt->execute(); 

       if($stmt->affected_rows > 0){ 
        exit("<script>alert('Exam Updated!!!')</script>"); 
       } else{ 
        throw new Exception('An error occurred, try again later!!!'); 
       }    

      } else { 
       throw new Exception('Failed to prepare SQL statement!'); 
      } 
     } else { 
      throw new Exception('Required variables are not yet set'); 
     } 
    }catch(Exception $e){ 
     echo $e->getMessage(); 
    } 
?> 
+0

ありがとうございます!しかし、それも更新されていないようです。 – akinlex

+0

それはついに働いた!私は自分のHTMLフォームに問題がありました。再度、感謝します – akinlex

関連する問題