Afg Hunter Ответов: 3

Вопросительный знак URL в PHP


Привет, ребята! Я пытаюсь вставить данные в базу данных и после отправки данных через форму URL-адрес, который я использую метод POST будет что-то вроде этого " somelinks/add-result.php?"
Что с ним происходит, есть идеи?

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

это страница для вставки данных в базу данных, и я использую действие формы как insert.php а метод-это пост.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "result1";
$con= mysqli_connect('localhost','root','','$dbname');

if(!$con){
echo'Not connected to server';
}
if(!mysqli_select_db($con,'result1'))
{
echo 'data base not selected';
}
$name =$_GET['Name'];
$id =$_GET['id'];
$Class =$_GET['Class'];
$Law =$_GET['Law'];
$Hoqoq =$_GET['Hoqoq'];
$PanelCode =$_GET['Law panel'];

$sql="INSERT INTO result (Name,id,Class,Hoqoq,Law,Law panel)VALUES('$name','$id','$Class','$Hoqoq','$Law','$PanelCode')";
if(!mysqli_query($con,$sql))
{
echo'Not Inserted';
}
else{
echo'Inserted';
}
header("refresh:2; url=admin-panel.php");
?>

Richard Deeming

$sql="INSERT INTO result (Name,id,Class,Hoqoq,Law,Law panel)VALUES('$name','$id','$Class','$Hoqoq','$Law','$PanelCode')";

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]

Sandeep Mewara

Ваша проблема не ясна. Вы usign query string и не можете получить данные?

Afg Hunter

да, эти данные не хранятся в базе данных веб-сайта.

Afg Hunter

трудно переварить те вещи, которые написаны в руководстве, но я проведу исследование по этому вопросу, спасибо Ричард! <3

Afg Hunter

как вы думаете, это нормально ?

connect_error) {
die("ошибка подключения:" . $conn->connect_error);
}

// подготовить и связать
$stmt = $conn->prepare("вставить в MyGuests (firstname, lastname, email) значения (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// установить параметры и выполнить
$firstname = "Джон";
$фамилия = "Лань";
$письмо = "john@example.com";
$stmt->выполнить();

$firstname = "Мэри";
$фамилия = "МО";
$письмо = "mary@example.com";
$stmt->выполнить();

$firstname = "Джули";
$фамилия = "Дули";
$письмо = "julie@example.com";
$stmt->выполнить();

echo "успешно созданы новые записи";

$stmt->закрыть();
$conn->закрыть();
?>

Richard Deeming

Это выглядит намного лучше. :)

Sandeep Mewara

Приведенный выше код, которым Вы делитесь, выглядит полностью статичным. Есть ли с этим какие-то проблемы?

Кроме того, я спрашивал, как вы пассивируете данные - используя параметр запроса или используя заголовок или тело?

Afg Hunter

тогда как же мне взять данные из HTML-формы и отправить их в базу данных ?

Afg Hunter

Я использовал метод POST для отправки данных,как вы можете видеть в кодах, но я получал знак вопроса после URL-адреса, и данные не хранились в базе данных.

Richard Deeming

Используя $_GET или $_POST коллекции. Просто сохраните их в переменных, которые вы привязали к параметрам.

$stmt->bind_param("sss", $firstname, $lastname, $email);
$firstname = $_GET['FirstName'];
...

Afg Hunter

Rechard я получаю значения формы в URL, и они не отправляются в базу данных. Name=rashed&id=10&class=10&submit=

Richard Deeming

Значения строки запроса не совпадают со значениями, которые вы пытаетесь извлечь.

Name=...

$firstname = $_GET['FirstName'];

Здесь нет FirstName параметр в строке запроса.

Afg Hunter

спасибо, Ричард! ^_^ теперь он работает, теперь у меня возникли проблемы с обновлением таблицы -_-.

3 Ответов

Рейтинг:
23

Richard MacCutchan

Данных, передаваемых в POST-запрос в $_POST массив. Видеть PHP: $_POST - руководство пользователя[^]


Рейтинг:
14

W∴ Balboos, GHB

Добавляя к ответу Сандипа, выше, есть и третий вариант:

$_REQUEST работает как для данных $_PUT, так и для данных $_GET. Есть одна возможная загвоздка: если вы публикуете оба типа данных на одной странице, и они оба используют один и тот же идентификатор, то у вас будет конфликт в том, что вы не сможете получить их оба. Однако - я никогда не делал и то, и другое вместе, и, конечно же, не стал бы повторно использовать имя для индекса, в любом случае. Это никогда не было проблемой в течение примерно десяти лет.



Рейтинг:
10

Sandeep Mewara

Вы говорите, что публикуете данные, но в приведенном выше коде вы извлекаете их с помощью GET.

$name =$_GET['Name'];
$id =$_GET['id'];
$Class =$_GET['Class'];
$Law =$_GET['Law'];
$Hoqoq =$_GET['Hoqoq'];
$PanelCode =$_GET['Law panel'];


Читайте о них: POST (работает с заголовками) vs GET (работает со строками запросов - данными после ? в url): PHP - GET & POST методы - Tutorialspoint[^]

Предполагая, что вы сделали правильный почтовый вызов, ниже приведен способ получения данных:
if(isset($_POST['save']))
{	 
    $id =$_POST['id'];
    $Class =$_POST['Class'];
    $Law =$_POST['Law'];
    $Hoqoq =$_POST['Hoqoq'];
    $PanelCode =$_POST['Law panel'];
    $sql =...
}

Образец для вашей справки.: Вставка данных в MySQL с помощью PHP[^]

Как и R. Deeming shared, убедитесь, что у вас есть параметризованный запрос, чтобы избежать SQL-инъекции.