2016-12-12 52 views
0

如果數據庫中存在相同的數據但我的編碼不起作用,我想從數據庫中刪除數據。如果用戶輸入數據不匹配,則應顯示錯誤警告。從數據庫中刪除數據(如果存在的話)

HTML

<form action="" method="POST"> 
<input type="number" name="student_id_delete" placeholder="Enter Student ID"/> 
<input type="submit" name="sub_delete" value="Delete"/> 
</form> 

PHP

define('HOST','localhost'); 
define('USER','root'); 
define('PASSWORD_HOST',''); 
define('DATABASE','ubhs'); 

if(defined('HOST') && defined('USER') && defined('PASSWORD_HOST') && defined('DATABASE')){ 
$conn = mysqli_connect(HOST, USER, PASSWORD_HOST, DATABASE); 
}else{ 
die(connection_failed.mysqli_connection_error()); 
} 

$userinput = true; 
$student_id_delete = $_POST['student_id_delete']; 

if(isset($_POST['sub_delete'])){ 
    if(empty($student_id_delete)){ 
    $userErr1 = "Please enter student ID to be deleted"; 
    $userinput = false; 
    } 
    $sql = "SELECT FROM student_info WHERE id=$student_id_delete"; 
    $result = mysqli_query($conn, $sql); 
    if (mysqli_num_rows($result)<0){ 
    echo "student could not be found in database"; 
    $userinput = false; 
    } 
if($userinput==true){ 
     $sql = "DELETE FROM student_info WHERE id=$student_id_delete"; 
     if(mysqli_query($conn,$sql)){ 
     echo "Success"; 
     }else{ 
     echo "Couldn't deleted"; 
     } 
    } 
} 
+1

它不工作怎麼樣?順便說一句,沒有必要檢查數據是否存在。如果它不存在 - 什麼都不會被刪除。 –

+2

'mysqli_num_rows($ result)<0' - 你是什麼意思? –

+1

應該是'mysqli_num_rows($ result)<1'或'mysqli_num_rows($ result)=== 0' –

回答

1

下面嘗試片段:

HTML代碼:

<form action="" method="POST"> 
    <input type="number" name="student_id_delete" placeholder="Enter Student ID"/> 
    <input type="submit" name="sub_delete" value="Delete"/> 
</form> 

PHP代碼:

<?php 

    define('HOST','localhost'); 
    define('USER','root'); 
    define('PASSWORD_HOST',''); 
    define('DATABASE','ubhs'); 

    if(defined('HOST') && defined('USER') && defined('PASSWORD_HOST') && defined('DATABASE')) 
    { 
     $conn = mysqli_connect(HOST, USER, PASSWORD_HOST, DATABASE); 
    } 
    else 
    { 
     die(connection_failed.mysqli_connection_error()); 
    } 

    $userinput = true; 
    $student_id_delete = $_POST['student_id_delete']; 

    if(isset($_POST['sub_delete'])) 
    { 
     if(empty($student_id_delete)) 
     { 
     $userErr1 = "Please enter student ID to be deleted"; 
     $userinput = false; 
     } 

     if($userinput==true) 
     { 
      $sql = "DELETE FROM student_info WHERE id=".mysqli_real_escape_string($student_id_delete); // sql injection prevention. 
      mysqli_query($conn,$sql); 
      echo "Records deleted: ".mysqli_affected_rows($conn); 
     } 
    } 
?> 

OUTPUT: 記錄刪除:1條 記錄刪除:0

+1

不建議易受攻擊的代碼。 downvoted –

+0

downvote,因爲我已經使用mysqli_affected_rows,它只支持較舊的PHP版本? –

+0

不,因爲直接將用戶輸入數據附加到查詢。(SQL注入) –