2017-05-25 6 views
0

管理者用のユーザー情報を含むhtmlテーブルが表示されています。特定のユーザー(行)を削除するリンク/アイコンを作成しましたが、500台の内部サーバーエラーが発生しています。jQuery/AjaxとPHPを使用してSQL行を削除

彼らはかなり遠くに私を得た、ここで別の同様の質問ですが、私はまだエラー

私のテーブルを受け付けております:

$query = "SELECT zone, firstname, lastname, email, business, reg_date, phone FROM UserList"; 
     // Display users is a table format 
     $result = $conn->query($query); 
     if ($result->num_rows > 0) { 
      // output data of each row 
      while($row = $result->fetch_assoc()) { 
       echo "<tr><td> " . $row["zone"]. "</td><td> " . $row["firstname"]. "</td><td> " . $row["lastname"] . "</td><td> " . $row["email"]. "</td><td> " . $row["business"]. "</td><td> " . $row["reg_date"]. " <a class='deleteRow' id='.$row->id.' href=''><i class='fa fa-times' aria-hidden='true'></a></td></i></tr><br> "; 
      } 
     } else { 
      echo "<div class='no_results'>No Users Added</div>"; 
     } 

私のjQueryの/アヤックス:

$(function(){ 
    $(document).on('click','.deleteRow',function(){ 
     var del_id= $(this).attr('id'); 
     var $ele = $(this).parent().parent(); 
     $.ajax({ 
      type:'POST', 
      url:'removeUser.php', 
      data:{'del_id':del_id}, 
      success: function(data){ 
       if(data=="YES"){ 
        $ele.fadeOut().remove(); 
       }else{ 
         alert("can't delete the row") 
       } 
      } 

      }); 
     }); 
}); 

私はremoveUserファイル:

<?php 
include('config.php'); 
$user_id = $_POST['del_id']; 
//echo $user_id 
$qry = "DELETE FROM UserList WHERE id = '$user_id'"; 
$result = mysql_query($qry); 
if(isset($result)) { 
    echo "YES"; 
} else { 
    echo "NO"; 
} 
?> 

500の内部サーバーエラーが発生し、どうすれば修正できますか?ありがとう。

+0

を[** SQLインジェクション**](https://en.wikipedia.org/wiki/SQL_injection)攻撃[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https://secure.php.net/)を使用してください。 manual/en/pdo.prepared-statements.php)は、[** this post **](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql - インジェクション - イン - php)。 –

+0

mysql_ *関数を使用しないでください。それらはv5.5(2013年6月)から廃止され、v7.0(2015年12月)以降削除されました。代わりに[** mysqli _ ***](https://secure.php.net/manual/en/book.mysqli.php)または[** PDO **](https://secure.php.net/** ** prepared statements **](https://secure.php.net/manual/en/pdo.prepare.php)と[**バインドされたパラメータ** ](https://secure.php.net/manual/en/pdostatement.bindparam.php)。 –

+0

ありがとうございました! – DLzer

答えて

0

複数の問題:

更新テーブル

$query = "SELECT id, zone, firstname, lastname, email, business, reg_date, phone FROM UserList"; 

$rowからidを得るためにあなたの選択クエリは連想配列ではないobject`ある

<a class='deleteRow' id='.$row['id'].'> 

整数で単一引用符を使用する必要はありませんが

$qry = "DELETE FROM UserList WHERE id = $user_id"; 

注値:あなたは以下のようなSQL Injection避けるためにプリペアドステートメントMySQLのPDOを使用する必要があります:あなたのコードはに対して脆弱である

$con = new PDO("mysql:host=".$dbHost.";"."dbname=".$dbName, $dbUsername, 
$dbUserPassword); 
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$qry = "DELETE FROM UserList WHERE id = ?"; 
$q = $con->prepare($qry); 

$response = $q->execute(array($user_id)); 
+0

これは完全に機能しました。私は今からPDO準備文を使用します。ありがとう! – DLzer

関連する問題