Member 13761429 Ответов: 2

Плз решить эту удалить не получится


student.php


<?php

class Student {
	public function __construct() {
		$hostname = 'localhost';
		$username = 'root';
		$password = '';
		$database = 'db_ci_batch21';
		$this->conn = new mysqli($hostname, $username, $password, $database);
		if(!$this->conn) {
			die("not connected");
		} 
	}
	
	public function save_student($data) {
		$sql = "INSERT INTO tbl_student(student_name, email_address, mobile_number)VALUES('$data[student_name]', '$data[email_address]', '$data[mobile_number]')";
		if($this->conn->query($sql)) {
			$message = "Save data successfully";
			return $message;
		} else {
			$message = "Data not saved";
			return $message;
			exit;
		}
	}
	
	public function select_all_student() {
		$sql = "SELECT * FROM tbl_student";
		$result = $this->conn->query($sql); 
		//echo '<pre>';
		//print_r($result);
		//exit;
		return $result;
	}
	
	public function view_student() {
		
	}
	
	public function edit_student() {
		
	}
	
	public function delete_student($student_id) {
		$sql = "DELETE FROM tbl_student WHERE student_id = '$student_id'";
		$this->conn->query($sql);
		header('Location: view_student.php');
	}
}

?>




view_student.php


<?php
require '../mvc/student.php';
$obj = new Student();

$result = $obj->select_all_student();


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Add student info




    	
        	<table><tbody><tr>        		<td>                	<a href="add_student.php">Add student</a> |
       		 		<a href="view_student.php">View student</a>
                    <h3>All student</h3>
                </td>        	</tr>            </tbody></table>
        
        	            <?php
			while($row = $result->fetch_assoc()) {
			?>
        	            <?php
			}
			?>
		<table border="1" align="center"><tbody><tr>        		<th>Id</th>	            <th>Student name</th>    	        <th>Email address</th>        	    <th>Mobile number</th>            	<th>Action</th>        	</tr><tr>        		<td><?php echo $row['student_id'] ?></td>	            <td><?php echo $row['student_name'] ?></td>    	        <td><?php echo $row['email_address'] ?></td>        	    <td><?php echo $row['mobile_number'] ?></td>            	<td>                <a href="">Edit</a> |
                <a href="delete.php?id = <?php echo $row['student_id'] ?>">Delete</a>
                </td>        	</tr></tbody></table>




delete.php


<?php

require "../mvc/student.php";
$obj = new Student();

$student_id = $_GET['id'];
//echo $student_id;

$obj->delete_student($student_id);

?>


Что я уже пробовал:

решите проблему с действием удаления

2 Ответов

Рейтинг:
8

Patrice T

$sql = "INSERT INTO tbl_student(student_name, email_address, mobile_number)VALUES('$data[student_name]', '$data[email_address]', '$data[mobile_number]')";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]


Рейтинг:
12

Wendelius

Глядя На оператор DELETE, действительно ли столбец student_id является строковым столбцом? Если нет, попробуйте удалить апострофы вокруг значения. Иначе говоря

$sql = "DELETE FROM tbl_student WHERE student_id = $student_id";

Кроме того, вы должны рассмотреть возможность использования параметров для предоставления значения оператору. Взгляните на это РНР: Подготовленные Заявления - Руководство Пользователя[^]


Member 13761429

edit.php



<?php
требуйте '../mvc/student.php';
$obj = новый студент();

$student_id = $_GET['id'];
$result = $obj->select_student_info_by_id($student_id);
student_info $ = $результат-&ГТ;fetch_assoc();
/*эхо '

';
print_r($student_info);
exit;*/

if(isset($_POST['btn'])) {
	$obj->update_student($_POST);
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Edit student info



  
	
    	
                        <a href="add_student.php">Add student</a> |
        <a href="view_student.php">View student</a>
        <h3>Edit student</h3>
                        	            	Student name               	                	
                    
                                                      	Email address               	                    
                                                    	Mobile number               	                    
                                                    	               	                    
                                    
	
   





when i run edit.php its shows error like this:


Notice: Undefined index: id in C:\xampp\htdocs\crud_php\mvc\edit.php on line 5

Fatal error: Uncaught Error: Call to a member function fetch_assoc() on boolean in C:\xampp\htdocs\crud_php\mvc\edit.php:7 Stack trace: #0 {main} thrown in C:\xampp\htdocs\crud_php\mvc\edit.php on line 7

Wendelius

Похоже, что вы пытаетесь использовать id до того, как он будет установлен.

Вы можете использовать PHP: isset - руководство пользователя[^] чтобы выяснить, было ли установлено это значение.

Попробуйте с помощью

if(!isset( $_GET['id'])) {
echo "сначала установите идентификатор";
}

Member 13761429

где я это использую...
раньше я так и делал...
<?php
требуйте '../mvc/student.php';
$obj = новый студент();

$student_id = $_GET['id'];
$result = $obj->select_student_info_by_id($student_id);
student_info $ = $результат-&ГТ;fetch_assoc();