2016-12-12 4 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

Это не работает, как? Btw нет необходимости проверять, существуют ли данные. Если он не существует - ничего не будет удалено. –

+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); 
     } 
    } 
?> 

ВЫВОД: отчеты удалены: 1 записей удалены: 0

+1

не предлагают уязвимый код. downvoted –

+0

downvote, потому что я использовал mysqli_affected_rows, который поддерживает только для старой версии PHP? –

+0

Нет, из-за прямого добавления пользовательских входных данных в запрос.(SQL injection) –

Смежные вопросы