Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php;我想检查mysql数据库,以确保在注册之前没有相同电子邮件地址的记录_Php_Mysql_Mysqli - Fatal编程技术网

使用php;我想检查mysql数据库,以确保在注册之前没有相同电子邮件地址的记录

使用php;我想检查mysql数据库,以确保在注册之前没有相同电子邮件地址的记录,php,mysql,mysqli,Php,Mysql,Mysqli,这是我的表格: <section class="loginform tmr"> <form name="login" action="welcome.php" method="post" accept-charset="utf-8"> <label for="username">Username: </label><br /> <?php if (isset($input_error

这是我的表格:

<section class="loginform tmr">
    <form name="login" action="welcome.php" method="post" accept-charset="utf-8">
        <label for="username">Username: </label><br />
            <?php if (isset($input_errors['username'])) { echo '<div class="error">' . $input_errors['username'] . '</div>'; } ?>
            <input type="username" name="username" placeholder="Handle" required><br />
            <input type="hidden" name="sign_up_date" value="<?php echo $_POST['sign_up_date'] ?>">
        <label for="usermail">Email: </label><br />
            <?php if (isset($input_errors['usermail'])) { echo '<div class="error">' . $input_errors['usermail'] . '</div>'; } ?>
            <input type="email" name="usermail" placeholder="yourname@email.com" required><br />
        <label for="password">Password: </label><br />
            <input type="password" name="password" placeholder="password" required><br />
            <input type="submit" value="Login">
    </form>
    </section>
我想检查用户名和电子邮件,如果其中任何一个正在使用,请通知新注册用户

我在想,我的服务器端验证工作变得如此混乱,也许我应该为此构建一个类

这不一定是我在atm机上需要帮助的东西。。我真的只想用最佳实践来检查mysql,如果电子邮件正在使用或者用户名正在使用

我们将非常感谢您的任何帮助。谢谢。

请尝试下面的内容或点击链接


此代码选择用户名或电子邮件的行数:

$sql = "SELECT COUNT(*) as amount FROM people WHERE username = ? 
       OR email = ?";
if ($stmt = $mysqli->prepare($sql)) {

    $stmt->bind_param("ss", $user, $email);
    $stmt->execute();
    $results = $stmt->get_result();
    $data = mysqli_fetch_assoc($results);

    if ($data['amount'] > 0)
    {
        print "User already exists";
    }
}

您需要检查查询,看看是否有超过1行…我复制并粘贴到我的代码中,得到了这个错误。。。致命错误:对非默认值调用成员函数prepare()-object@cookinggood也许,您没有定义$conn变量。改用
$mysqli
。这些问题对农场来说太好了,不是吗?@YourCommonSense是的,更多这样的问题,我们会得到很多好评。@cookinggood不介意。我们必须解决这个问题。我看到,您在代码中使用“$mysqli->”。我更新了答案。请试一试。一个答案,实际上只是一个指向另一个答案的链接,应该是一个评论。那么你只是随便挑问题,还是你总是不关心自己的事?我很惊讶这个人没有得到同样的待遇@YourCommonSense@Your常识上,如果我只有评论回答,我总是包含另一个QA链接,但当我给出答案时,它将有助于理解答案,所以我包括了这是任何问题?我不会说使用完全不同API的代码“有助于理解”@你的常识好的,我将在未来使用这个意义:)
<?php
    function user_exists($email) {
        $query = "SELECT 1 FROM " . USER_TABLE . " WHERE email = ?";
        $stmt = $this->_db->prepare($query);
        $stmt->execute(array($email));
        return (bool)$stmt->fetchColumn();
    }

    //do your stuff here same for username
    if(user_exits($register_email))
$sql = "SELECT COUNT(*) as amount FROM people WHERE username = ? 
       OR email = ?";
if ($stmt = $mysqli->prepare($sql)) {

    $stmt->bind_param("ss", $user, $email);
    $stmt->execute();
    $results = $stmt->get_result();
    $data = mysqli_fetch_assoc($results);

    if ($data['amount'] > 0)
    {
        print "User already exists";
    }
}