Вызов SQL - это правильно?

Я недавно переехал на другой хост, и у меня возникла проблема. Когда я ввожу данные в форму своего веб-сайта, база данных не обновляется. Однако, когда операторы моего хостинга делают это на своей стороне, форма, похоже, им подходит. Почему это могло быть?

Вот вызов базы данных в PHP

<?php

error_reporting(E_ALL); ini_set('display_errors', 1);

$name = $_POST['name1'];
$surname = $_POST['surname1'];
$email = $_POST['email1'];
$email = filter_var($email, FILTER_SANITIZE_EMAIL); // Sanitizing E-mail.
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {

    define('DB_NAME', 'name');
    define('DB_USER', 'user');
    define('DB_PASSWORD', 'password');
    define('DB_HOST','localhost');

    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

    $name = mysqli_real_escape_string($conn, $name);
    $surname = mysqli_real_escape_string($conn,$surname);
    $email = mysqli_real_escape_string($conn,strtolower($email));

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

    $sql = "INSERT INTO interested (Name, Surname, Email) VALUES ('$name', '$surname', '$email')";

    if ($conn->query($sql) === TRUE) {
        echo "Thank you!";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

} else {
    echo "<span>* invalid email *" + $email +"</span>";
}
?>

Возможный дубликат Могу ли я смешивать MySQL API с PHP?

user3783243 26.06.2018 22:03

Обратная связь: если кто-то предлагает возможный дубликат, это не нападение на вас. Вы можете добавить в свой вопрос (в конце) объяснение, почему это не дубликат, но сосредоточиться на «почему» - просто указать, что это не дубликат, недостаточно. Хорошая идея - воздержаться от того, чтобы просить аудиторию «внимательно прочитать вопрос» - носителю английского языка, который будет невероятно грубым и покровительственным. Я удивлен, что вы не получили несколько голосов против. Надеюсь, это поможет.

halfer 01.09.2018 17:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я забыл упомянуть, что вы также должны активировать сообщение об ошибке на уровне mysql. Например. чтобы установить $mysqliDriver->report_mode, как показано ниже.

Итак, протестируйте этот код как есть, после изменения учетных данных db. Если это сработает, значит проблема в ваших кодах. Если нет, то он находится где-то в другом месте.

<?php
// Db configs.
define('HOST', 'localhost');
define('PORT', 3306);
define('DATABASE', 'tests');
define('USERNAME', 'root');
define('PASSWORD', 'root');

/*
 * Enable internal report functions. This enables the exception handling,
 * e.g. mysqli will not throw PHP warnings anymore, but mysqli exceptions
 * (mysqli_sql_exception).
 *
 * MYSQLI_REPORT_ERROR: Report errors from mysqli function calls.
 * MYSQLI_REPORT_STRICT: Throw a mysqli_sql_exception for errors instead of warnings.
 *
 * @link http://php.net/manual/en/class.mysqli-driver.php
 * @link http://php.net/manual/en/mysqli-driver.report-mode.php
 * @link http://php.net/manual/en/mysqli.constants.php
 */
$mysqliDriver = new mysqli_driver();
$mysqliDriver->report_mode = (MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// Create a new db connection.
$connection = new mysqli(HOST, USERNAME, PASSWORD, DATABASE, PORT);

// Signalize if a new record could be inserted, or not.
$recordInserted = FALSE;

// Operations upon form submission.
if (isset($_POST['submit'])) {
    // Read the posted values.
    $name = $_POST['name1'] ?? '';
    $surname = $_POST['surname1'] ?? '';
    $email = $_POST['email1'] ?? '';

    // Validate the name.
    if (empty($name)) {
        $errors[] = 'Please provide the name.';
    } /* Other validations here using elseif statements */

    // Validate the surname.
    if (empty($surname)) {
        $errors[] = 'Please provide the surname.';
    } /* Other validations here using elseif statements */

    // Validate the email.
    if (empty($email)) {
        $errors[] = 'Please provide an email address.';
    } elseif (
            !filter_var($email, FILTER_SANITIZE_EMAIL) ||
            !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = 'The email address is not in a valid format.';
    } /* Other validations here using elseif statements */

    // Insert a new record - if no errors yet.
    if (!isset($errors)) {
        $sql = 'INSERT INTO interested (
                    Name,
                    Surname,
                    Email
                ) VALUES (
                    ?, ?, ?
                )';

        $statement = $connection->prepare($sql);
        $statement->bind_param('sss', $name, $surname, $email);
        $statement->execute();

        // Signalize that the new record was successfully inserted.
        $recordInserted = TRUE;
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />
        <meta name = "viewport" content = "width=device-width, initial-scale=1, user-scalable=yes" />
        <meta charset = "UTF-8" />
        <!-- The above 3 meta tags must come first in the head -->

        <title>Demo - Insert</title>
    </head>
    <body>

        <div class = "messages">
            <?php
            if (isset($errors)) {
                echo implode('<br/>', $errors);
            } elseif ($recordInserted) {
                echo 'A new record was successfully inserted.';
            }
            ?>
        </div>

        <br/>

        <form action = "" method = "post">
            <label for = "name1">Name</label>
            <input type = "text" id = "name1" name = "name1" placeholder = "Name" required>
            <br/>
            <label for = "surname1">Surname</label>
            <input type = "text" id = "surname1" name = "surname1" placeholder = "Surname" required>
            <br/>
            <label for = "email1">Email</label>
            <input type = "email" id = "email1" name = "email1" placeholder = "Email" required>

            <button type = "submit" id = "submit" name = "submit" value = "submit">
                Submit
            </button>
        </form>

    </body>
</html>

Другие вопросы по теме