Как я могу вставить данные в 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 } ?>
Я буду, но не могли бы вы рассказать мне, как вставить данные ??
Почему вы используете двойную проверку при получении нужной строки по запросу select
if ($wireacno != $wire_account_number) { всегда будет ложным
Я обновил свой ответ. Теперь попробуй






Вы используете бесполезные двойные проверки. 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 извини. Ошибка печати. Я явно пропустил эту строчку. Спасибо за указание
Вы можете сделать столбец «Номер счета» в базе данных в качестве первичного ключа. Поэтому, когда вы попытаетесь вставить тот же номер учетной записи, из базы данных вы получите исключение для нарушения первичного ключа.
(Ограничение PRIMARY KEY однозначно идентифицирует каждую запись в таблице. Первичные ключи должны содержать УНИКАЛЬНЫЕ значения и не могут содержать значения NULL. Таблица может иметь только один первичный ключ, который может состоять из одного или нескольких полей. Обратитесь к первичному ключу из это)
Вы можете использовать эту ошибку, чтобы установить успешную вставку или нет.
это означает, что мне придется добавить его как автоматический столбец, и это может быть только один автоматический столбец. так делать автоматическое увеличение идентификатора ??
Нет. Это не столбец с автоматическим приращением. Я отредактировал ответ, добавив ссылку, чтобы узнать о первичном ключе. Пройдите через это. В качестве основного вы можете добавлять уникальные значения. Тогда вы не сможете добавить запись с тем же номером.
Ваш код открыт для инъекций sql. Попробуйте использовать pdo или подготовленные операторы