Как вставить данные, если условия верны

Как я могу вставить данные в mysql из ФОРМЫ при соблюдении условий.

Это мои коды.

$sql0 проверяет, существуют ли уже похожие данные

$sql1 вставить данные в mysql

$wirebname   = mysqli_real_escape_string($conn, $_POST["wirebname"]);
$wireaccname = mysqli_real_escape_string($conn, $_POST["wireaccname"]);
$wireacno    = mysqli_real_escape_string($conn, $_POST["wireacno"]);
$wirebranchnumber = mysqli_real_escape_string($conn, $_POST["wirebranchnumber"]);
$swift       = mysqli_real_escape_string($conn, $_POST["swift"]);
$route       = mysqli_real_escape_string($conn, $_POST["route"]);
$state       = mysqli_real_escape_string($conn, $_POST["state"]);
$country     = mysqli_real_escape_string($conn, $_POST["country"]);

$id = $_SESSION['loggedIn_cust_id'];
$sql0 = "
    SELECT wire_benef_id 
    FROM wire_beneficiary".$id." 
    WHERE wirebname='".$wirebname."'
        AND wireaccname='".$wireaccname."'
        AND wireacno='".$wireacno."'
        AND swift='".$swift."'
        AND route='".$route."'
";

$result = $conn->query($sql0);

$success = 0;
if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    $wire_account_number = $row["wireacno"];

    if ($wireacno != $wire_account_number) {
        $sql1 = "INSERT INTO wire_beneficiary".$id." 
            VALUES(
                NULL,
                '$wirebname',
                '$wireaccname',
                '$wireacno',
                '$wirebranchnumber',
                '$swift',
                '$route',
                '$state'
                '$country',
                )
        ";

        if (($conn->query($sql1) === TRUE)) {
            $success = 1;
        }
    } else {
        $success = -1;
    }
}

Если номер счета уже существует, я хочу распечатать ошибку

Если нет, это должно быть записано в базу данных.

<?php
if ($success == 1) { ?>
    <p id = "info"><?php echo "Beneficiary successfully added !\n"; ?></p>
<?php } ?>

Ваш код открыт для инъекций sql. Попробуйте использовать pdo или подготовленные операторы

Zain Farooq 19.10.2018 12:43

Я буду, но не могли бы вы рассказать мне, как вставить данные ??

Oluwatobiloba 19.10.2018 12:47

Почему вы используете двойную проверку при получении нужной строки по запросу select

Zain Farooq 19.10.2018 12:48
if ($wireacno != $wire_account_number) { всегда будет ложным
Zain Farooq 19.10.2018 12:50

Я обновил свой ответ. Теперь попробуй

Zain Farooq 19.10.2018 13:28
Стоит ли изучать 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
5
51
2

Ответы 2

Вы используете бесполезные двойные проверки. if ($wireacno != $wire_account_number) { всегда возвращает false, поскольку вы получаете желаемую строку по запросу select. если if ($result->num_rows > 0) { возвращает истину, значит, ваша учетная запись существует, и вам не нужна дополнительная проверка. так что попробуйте этот код

if ($result->num_rows == 0) {

    $sql1 = "INSERT INTO wire_beneficiary".$id." VALUES(
                NULL,
                '$wirebname',
                '$wireaccname',
                '$wireacno',
                '$wirebranchnumber',
                '$swift',
                '$route',
                '$state'
                '$country',
            )";

    if (($conn->query($sql1) === TRUE)) {
        $success = 1;
    }
}
else {
    $success = -1;
 }

}

Как упоминалось выше, ваш код уязвим и открыт для SQL-инъекций, чтобы попытаться использовать PDO или подготовленные операторы.

@comphonia извини. Ошибка печати. Я явно пропустил эту строчку. Спасибо за указание

Zain Farooq 19.10.2018 13:19

Вы можете сделать столбец «Номер счета» в базе данных в качестве первичного ключа. Поэтому, когда вы попытаетесь вставить тот же номер учетной записи, из базы данных вы получите исключение для нарушения первичного ключа.

(Ограничение PRIMARY KEY однозначно идентифицирует каждую запись в таблице. Первичные ключи должны содержать УНИКАЛЬНЫЕ значения и не могут содержать значения NULL. Таблица может иметь только один первичный ключ, который может состоять из одного или нескольких полей. Обратитесь к первичному ключу из это)

Вы можете использовать эту ошибку, чтобы установить успешную вставку или нет.

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

Oluwatobiloba 21.10.2018 01:12

Нет. Это не столбец с автоматическим приращением. Я отредактировал ответ, добавив ссылку, чтобы узнать о первичном ключе. Пройдите через это. В качестве основного вы можете добавлять уникальные значения. Тогда вы не сможете добавить запись с тем же номером.

Ruchira 21.10.2018 04:40

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