Данные не вставляются через форму в MySQL (кодирование в PHP)

Я пытаюсь вставить данные в базу данных MySQL через форму, используя скрипт php. Я не получаю никаких ошибок, но информация, представленная формой, не вставляется в базу данных .. вместо данных (которые отправляются формой), значения, вставленные в базу данных: (1,1,1,1,1) .. это также тип атаки SQL-инъекцией? (как я искал в сети и получил название этой атаки)
вот мой PHP-код для вставки данных в базу данных ..

<html>
<head>
<link rel="stylesheet" type="text/css" href="clubcs.css">
<div class="text_field">
<div class="segment_header" align="center">
<?php
$con=mysqli_connect("localhost","root","");

if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"test");
$first=mysqli_real_escape_string($con,isset($_POST['first']));
$last=mysqli_real_escape_string($con,isset($_POST['last']));
$addr=mysqli_real_escape_string($con,isset($_POST['addr']));
$city=mysqli_real_escape_string($con,isset($_POST['city']));
$contact=mysqli_real_escape_string($con,isset($_POST['contact']));

$sql1=mysqli_prepare($con,"INSERT INTO clubdata (FirstName, LastName, Address, City,Contact_no)
VALUES (?,?,?,?,?)");
$sql1->bind_param("ssssi", $first, $last, $addr, $city, $contact);
$sql1->execute();

if(isset( $_POST["first"] ) &&  isset($_POST["last"]) && isset($_POST["addr"] ) && isset($_POST["city"]) &&  isset($_POST["contact"])  )
{
echo "Thank You" ." " .$_POST["first"];
echo " You have Successfully registered with us!";
exit();
}
mysqli_close($con);
?>

Есть ли что-то, что я не получаю или отсутствует? Пожалуйста, предложите мне любое решение!

-1

Решение

Как указали @fred и @Boren, вы передавали логические целочисленные значения, возвращаемые isset.

Если вы переместите if(isset()) условие, чтобы обернуть весь код, вам не нужно проверять, если значение установлено снова.

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

<?php
if(isset($_POST["first"],$_POST["last"], $_POST["addr"],$_POST["city"],$_POST["contact"]))
{
$con=mysqli_connect("localhost","root","");

if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"test");

$sql = "INSERT INTO clubdata (FirstName, LastName, Address, City,Contact_no) VALUES (?,?,?,?,?)";
$stmt=mysqli_prepare($con, $sql);

$stmt->bind_param("ssssi", $_POST['first'], $_POST['last'], $_POST['addr'], $_POST['city'], $_POST['contact']);
$stmt->execute();

if(mysqli_num_rows($stmt) > 0){
echo "Thank You" ." " .$_POST["first"];
echo " You have Successfully registered with us!";
}else{
echo 'INSERT did not affect any rows';
}

mysqli_close($con);
}else{
echo "Missing required fields";
}

}

Ох и не exit перед закрытием соединения оставьте его открытым.

0

Другие решения

значения, вставленные в базу данных (1,1,1,1,1)

isset() возвращает только это, 0 или 1 который объясняет все 1вернулся, как isset() предполагает, что вы хотите, чтобы они все были установлены, поэтому возвращаются TRUE являющийся 1,

Возвращает ПРАВДА если var существует и имеет значение, отличное от NULL, FALSE иначе.

Вам нужно использовать троичный оператор с этим также

$first=mysqli_real_escape_string($con,isset($_POST['first']) ? $_POST['first'] : '');
$last=mysqli_real_escape_string($con,isset($_POST['last']) ? $_POST['last'] : '');
$addr=mysqli_real_escape_string($con,isset($_POST['addr']) ? $_POST['addr'] : '');
$city=mysqli_real_escape_string($con,isset($_POST['city']) ? $_POST['city'] : '');
$contact=mysqli_real_escape_string($con,isset($_POST['contact']) ? $_POST['contact'] : '');

Примечание:

Если «контакт» является строкой (который должен быть), вы захотите использовать все sЭто для вас. т.е .: "sssss"

$sql1->bind_param("sssss", $first, $last, $addr, $city, $contact);

Понимание.

2

Это связано с тем, что функция isset () возвращает 1 или 0 в зависимости от того, установлено значение или нет. Вы должны сделать проверку заранее, а затем поместить значения следующим образом:

if(isset($_POST['first']) && isset($_POST['last']) && isset($_POST['addr']) && isset($_POST['city']) && isset($_POST['contact']))
{
$first = mysqli_real_escape_string($con, $_POST['first']);
$last = mysqli_real_escape_string($con, $_POST['last']);
$addr = mysqli_real_escape_string($con, $_POST['addr']);
$city = mysqli_real_escape_string($con, $_POST['city']);
$contact = mysqli_real_escape_string($con, $_POST['contact']);
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector