用php while循环将数据插入mysql

gudnpqoy  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(461)

我正试图对照我的数据库检查一封电子邮件,如果它还不存在,请将它添加到数据库中。

$query = "SELECT * FROM users";

$inputQuery = "INSERT INTO users (`email`, 
`password`) VALUES ('$emailInput', 
'$passInput')";

$emailInput = ($_POST['email']);

$passInput = ($_POST['password']);

if ($result = mysqli_query($link, $query)) { 

    while ($row = mysqli_fetch_array($result)) { 
        if ($row['email'] == $emailInput) { 
            echo "We already have that email!";
        } else {
            mysqli_query($link, $inputQuery);
            echo "Hopefully that's been added to the database!";
        }
    }
};

它可以检测到现有的电子邮件,它只是增加位。。。
目前,这似乎为每个现有行添加了一个新的空行(大小增加了一倍)。我试图理解它为什么不添加信息,以及如何以某种方式逃离循环。
同样值得注意的是,每个人似乎都重用$query,但这对我来说似乎很奇怪。像这里一样单独命名查询是一种好的做法吗?
如果还有什么需要补充的,请告诉我。

v8wbuo2f

v8wbuo2f1#

试试这个:

$emailInput = mysqli_real_escape_string($link, $_POST['email']);
$passInput = mysqli_real_escape_string($link, $_POST['password']);

$qry3=mysqli_query($link,"select * from users where `email`='".$emailInput."'");
$num=mysqli_num_rows($qry3);
if($num==1) {

    echo "Email-Id already exists";

} else {

    $inputQuery = mysqli_query($link,"INSERT INTO users (`email`, `password`) VALUES ('".$emailInput."', '".$passInput."')");
    if ($inputQuery) { 
        echo "Hopefully that's been added to the database!";
    }
}
nom7f22z

nom7f22z2#

您的代码似乎有点设计过度,因为为什么不传递给您$\u post['email']以选择查询where子句“select*from users where email=$emailinput”,然后检查它是否已经存在。另外,请记住,这只是一个示例,您应该始终检查和清理用户输入。从另一方面来说,你可以用mysql只使用插入。。。重复密钥更新语法。https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html 这需要为电子邮件列添加唯一键。

70gysomp

70gysomp3#

我不打算谈论标准,而是直接、简单地回答你的问题。
方法-1:

INSERT INTO users (`email`,`password`) SELECT '$emailInput', '$passInput' from DUAL WHERE NOT EXISTS (select * from users where `email` = '$emailInput');

方法-2:-在 email 列-使用插入忽略选项。
用户3783243的评论值得注意

相关问题