Как мне вставить значения из формы, используя php и sql, используя мой собственный скрипт? - PullRequest
0 голосов
/ 28 февраля 2019

Привет, пользователь и новичок впервые, когда дело доходит до использования php,

Как мне вставить значения из формы, используя php и sql.

Я создал следующий код, используя phpи sql.вот моя форма.

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

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// prepare and bind with form attached.
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
?>
<form action="/t.php" method="post">
  First name:
  <input type="text" name="firstname">
   <br> Last Name:
   <input type="text" name="lastname">
    <br>Email:
   <input type="text" name="email">
  <input type="submit" value="Submit">
</form>

<?php
// set parameters and execute
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$stmt->execute();


$stmt->close();
$conn->close();
?>

В файле t.php просто говорится, что записи были успешно добавлены, хотя там нет логики, просто простой комментарий эха.

Я просто хочузнать, как вставить данные, используя формы с php и sql.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Вы можете сделать это следующим образом:

Чтобы предотвратить дублирование, сохраните соединение БД в файле с именем db.php.

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

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

Затем включите его в main.phpфайл.Вот файл main.php, написанный с подготовленным оператором , ошибки предотвращены .

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {    
    try {
        # check if all the params are set
        if (
            !empty($_POST['firstname']) && 
            !empty($_POST['lastname']) &&
            !empty($_POST['email'])
        ) {
            $firstname = htmlspecialchars(trim($_POST['firstname']));
            $lastname = htmlspecialchars(trim($_POST['lastname']));
            $email = htmlspecialchars(trim($_POST['email']));

            include_once 'db.php';

            $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");

            if (
                $stmt &&
                $stmt->bind_param("sss", $firstname, $lastname, $email) &&
                $stmt -> execute() 
            ) {
                echo "Yay! Inserted.";
            } else {
                throw new Exception("Error in MYSQLI Statement");   
            }
        } else {
            throw new Exception("Some data is not set");
        }
    } catch (Exception $e) {   
        die($e -> getMessage());
    }
} else { ?>

<form action="" method="post">
  First name:
  <input type="text" name="firstname">
   <br> Last Name:
   <input type="text" name="lastname">
    <br>Email:
   <input type="text" name="email">
  <input type="submit" value="Submit">
</form>
<?php } ?>

Строки должны быть проверены перед вставкой в ​​базу данных.Здесь я использовал htmlspecialchars() для предотвращения XSS и trim() для удаления ненужных пробелов.

Спасибо.

0 голосов
/ 28 февраля 2019

Форма действия вызовет t.php, но у вас его нет!Создайте два файла: myHtml.html и t.php в одной папке

myHtml.html

<html>
    <form action="t.php" method="post">
        First name:
        <input type="text" name="firstname">
        <br> Last Name:
        <input type="text" name="lastname">
        <br>Email:
        <input type="text" name="email">
        <input type="submit" value="Submit">
    </form>
</html>

t.php

<?php
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "datab";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// prepare and bind with form attached.
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// set parameters and execute
$stmt->execute();

$stmt->close();
$conn->close();
0 голосов
/ 28 февраля 2019
<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "datab";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>   

<form action="/t.php" method="post">
      First name:
      <input type="text" name="firstname">
       <br> Last Name:
       <input type="text" name="lastname">
        <br>Email:
       <input type="text" name="email">
      <input type="submit" name="submit" value="Submit">
    </form>



    <?php
    if(isset($_POST['submit']) && !empty($_POST['submit'])) {
    // set parameters and execute
    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];
    $email = $_POST['email'];

    // prepare and bind with form attached.
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $firstname, $lastname, $email);
    $stmt->execute();
    $stmt->close();
    $conn->close();
    }
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...