Как вставить данные, если условия верны - PullRequest
0 голосов
/ 19 октября 2018

Как я могу вставить данные в 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 } ?>

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

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

(Ограничение PRIMARY KEY однозначно определяет каждую запись в таблице. Первичные ключи должны содержать уникальные значения, ине может содержать значения NULL. Таблица может иметь только один первичный ключ, который может состоять из одного или нескольких полей. См. первичный ключ из this )

Эту ошибку можно использовать для установки вставкиуспешно или нет.

0 голосов
/ 19 октября 2018

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

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 или Prepared

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...