php - 为什么我的用户被添加到一个表而不是另一个表

标签 php mysql

我正在为我的用户创建一个个人资料图像上传系统。注册后,php 代码应在“user”表中创建一个用户,并在“profileImg”表中创建一个用户。我的日志中没有收到任何错误,但用户被添加到“user”而不是“profileImg”。任何人都可以帮忙吗?预先感谢您。

SIGNUP.INC.PHP:

<?php  
session_start();
include '../dbh.php';

$respond = array(
    'status'   => true,
    'message'  => 'There was an error',
    'redirect' => '../profile.php',
    'errors',
);

if (isset($_POST['submit'])) {

    $first = mysqli_real_escape_string($conn, $_POST['first']);
    $last = mysqli_real_escape_string($conn, $_POST['last']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']);

    $errorEmpty = false;
    $errorEmail = false;


if (empty($first) || empty($last) || empty($email) || empty($pwd)) {

    $respond['errors'][] = "Please fill out all fields!";
    $respond['errorEmpty'] = true;

} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

    $respond['errors'][] = "Please enter a valid email address!";
    $respond['errorEmail'] = true;

} else {

    $sql = "SELECT email FROM user WHERE email='$email'";
    $result = mysqli_query($conn, $sql);
    $emailcheck = mysqli_num_rows($result);


    if ($emailcheck > 0) {
        $respond['errors'][] = "That email address already exists!";
        $respond['errorEmail'] = true;
    } 



else {
    $encryptpwd = password_hash($pwd, PASSWORD_DEFAULT);
    $sql = "INSERT INTO user (first, last, email, pwd)
    VALUES ('$first', '$last', '$email', '$encryptpwd')";
    $result = mysqli_query($conn, $sql);

    $sql = "SELECT * FROM user WHERE email='$email' AND first='$first'";
    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_assoc($result)) {
            $email = $row['id'];
            $sql = "INSERT INTO profileImg (email, status)
                    VALUES ('$email', 1)";

        }
    }


    }

}
}
echo json_encode($respond);
?>

配置文件.PHP:

最佳答案

这肯定是数据库级别的违规。

查看您的此 block :

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        $email = $row['id'];
        $sqlProfile = "INSERT INTO profileImg (email, status)
                VALUES ('$email', 1)";
    }
}
<小时/>

我很确定在您的数据库中,profileImg 表的电子邮件列是 varchar,尽管您将其作为 int 插入 $email = $row['id'];

将该行替换为 this $email = $row['email'];

<小时/>

更改后的代码:

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        $email = $row['email'];
        $sqlProfile = "INSERT INTO profileImg (email, status)
                VALUES ('$email', 1)";
        mysqli_query($conn, $sqlProfile);
    }
}

更新:添加mysqli_query($conn, $sqlProfile);来执行查询

关于php - 为什么我的用户被添加到一个表而不是另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44642221/

相关文章:

mysql - 使用 Spring 的 "jdbc:initialize-database",如何使用存储过程运行脚本?

java - 无法创建连接:Could not connect: Client does not support authentication protocol requested by server

php - 通过发布的数组过滤数据?

mysql - 跳过 MySQL 密码

javascript - 如何在表单字段的文本框中输入泰米尔字体

php - JavaScript 和 PHP 可以证明在线纸牌游戏吗?

php - MySQL-多连接

mysql - MySQL 的 ORDER BY RAND() 是如何工作的?

javascript - Json_encode PHP中的许多数据从数据库到Jquery AJAX

php - 将 php 数组插入 mysqli 数据库行?