如果条件正确,如何插入数据

时间:2018-10-19 10:37:55

标签: php mysql database if-statement insert

如果满足条件,如何从FORM将数据插入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 :(得分:1)

您正在使用无用的双重检查。当您通过if ($wireacno != $wire_account_number) {查询检索所需的行时,select始终返回false。如果它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语句

答案 1 :(得分:0)

您可以将数据库中的“帐号”列作为主键。 因此,当您尝试插入相同的帐号时,将从db中获得一个违反主键的异常。

(PRIMARY KEY约束唯一标识表中的每个记录。 主键必须包含UNIQUE值,并且不能包含NULL值。 一个表只能有一个主键,它可以由单个或多个字段组成。请参阅this中的主键)

您可以使用该错误设置插入成功与否。