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

0

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

Вот вызов базы данных в 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>";
}
?>
  • 0
    Возможный дубликат Могу ли я смешивать MySQL API в PHP?
  • 0
    Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
Показать ещё 1 комментарий
Теги:
database

1 ответ

0
Лучший ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню