Member 13890780 Ответов: 2

Php, sqli проблема вставки данных


Привет ребята,
Я новичок в PHP и sqli, я пишу этот код, чтобы вставить данные в свою базу данных.


Соединение устанавливается успешно, но запись вставить не удается.
Пожалуйста, помогите найти ошибку в коде.
спасибо

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

<?php
include("connect.php");
if (isset($_POST['submit'])){
	$title=$_POST['p_title'];
	$date=date('d-m-y');
	$name=$_POST['p_name'];
	$country=$_POST['p_country'];
	$contactno=$_POST['p_contactno'];
	$email=$_POST['p_email'];
	$image=$_FILES['p_image']['name'];
	$image_type=$_FILES['p_image']['type'];
	$image_size=$_FILES['p_image']['size'];
	$image_tmp=$_FILES['p_image']['tmp_name'];
	$content=$_POST['p_content'];
	
	if($title == '' or $name==''){
		echo " alert('All Field Required')";
		exit();
	}
	if($image_type == "image/jpeg" or $image_type == "image/png"
	or $image_type == "image/gif"){
		if($image_size<=500000){
			move_uploaded_file($image_tmp,"images/$image_name");
		}else{
			echo " alert ('Image size is larger')";
		}
}else {
	echo "alert ('Image type is invalid')";
}
	$query = "INSERT INTO testimonial (post_title, post_date, post_author, post_image, post_content, post_country, post_phno, post_email) 
	valuse ('$title','$date','$name','$image','$content','$country','$contactno','$email')";
	
	$run = mysqli_query($con, $query);
	if($run){
		echo " alert ('Record Added') ";
		header ('refresh:3; url: blog.php');
	}else{
		echo " alert ('Data Not Sent') ";
		header ('refresh:3; location: localhost/insert_post.php');
	}
}
?>

Richard MacCutchan

Что происходит, когда вы запускаете свой код?

2 Ответов

Рейтинг:
1

Patrice T

$query = "INSERT INTO testimonial (post_title, post_date, post_author, post_image, post_content, post_country, post_phno, post_email)
valuse ('$title','$date','$name','$image','$content','$country','$contactno','$email')";

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


Member 13890780

спасибо за ваш совет, я знал это и позже закреплю его, но изначально я застрял, чтобы вставить данные в базу данных.

Richard Deeming

- Я закреплю его позже." это плохая идея. Существует не только хороший шанс, что у вас не будет времени должным образом защитить его или что вы что-то пропустите; вы также будете бороться за то, чтобы получить сцепленные SQL-запросы в правильном формате для работы, что было бы не проблемой, если бы вы использовали параметры.

Рейтинг:
0

muhammad sufiyan

ПОПРОБУЙТЕ ЭТОТ КОД

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('aaa', 'bbb', 'abc@example.com')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>