php - INSERT/VALUES 未提交

标签 php mysql mysqli

我正在尝试插入名字、姓氏等。但是,我认为我的值(value)观有问题。关于如何表达值(value)观有什么帮助吗?

            $query="INSERT INTO `users` (`firstname`, `lastname`,`email`, `password`, `gender`, `country`, `state`) VALUES('".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."')";
            mysqli_query($link, $query);
            $_SESSION['id']=mysqli_insert_id($link); 
            header("Location: dashboard.php");
        }
    }
}

如果需要的话,这里是全部内容......

if ($_POST['submit']=="Sign Up") {  
    if (!$_POST['firstname']) $error.="<br />Please enter your first name";
    if (!$_POST['lastname']) $error.="<br />Please enter your last name";
    if (!$_POST['email']) $error.="<br />Please enter your email";
        else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $error.="<br />Please enter a valid email address";           
    if (!$_POST['password']) $error.="<br />Please enter your password";
        else {          
            if (strlen($_POST['password'])<8) $error.="<br />Please enter a password with at least 8 characters";
            if (!preg_match('`[A-Z]`', $_POST['password'])) $error.="<br />Please enter at least 1 capital letter";         
        }
    if ($_POST['password'] !== $_POST['confirmpassword']) 
        $error.="<br />Your passwords do not match.";
    if (!$_POST['gender']) $error.="<br />Please enter your gender";
    if (!$_POST['country']) $error.="<br />Please enter your country";
    if (!$_POST['state']) $error.="<br />Please enter your state";          

     if ($error) $error = "There were error(s) in your signup details:".$error;
     else {
        $query = "SELECT * FROM `users` WHERE email='".mysqli_real_escape_string($link, $_POST['email'])."'";
        $result = mysqli_query($link, $query);
        $results = mysqli_num_rows($result);
        if ($results) $error = "That email address is already registered";
        else {
            $query="INSERT INTO `users` (`firstname`, `lastname`,`email`, `password`, `gender`, `country`, `state`) VALUES('".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."')";
            mysqli_query($link, $query);
            $_SESSION['id']=mysqli_insert_id($link); 
            header("Location: dashboard.php");
        }
    }
}

最佳答案

您的查询如下所示;代码重新格式化为多行以更好地显示问题:

$query = "INSERT INTO `users` (`firstname`, `lastname`,`email`, `password`, `gender`, `country`, `state`)"
       . " VALUES('".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."')"
       ;

因此,您有七 (7) 个要插入的值,但实际的 VALUES 只有两 (2) 项。这就是你的问题所在。理解我的意思的快速方法是添加空值,如下所示:

$query = "INSERT INTO `users` (`firstname`, `lastname`,`email`, `password`, `gender`, `country`, `state`)"
       . " VALUES('','','".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."','','','')"
       ;

但我相信您想要插入所有 $POST 数据,如下所示:

$query = "INSERT INTO `users` (`firstname`, `lastname`,`email`, `password`, `gender`, `country`, `state`)"
       . " VALUES('".mysqli_real_escape_string($link, $_POST['firstname'])."','".mysqli_real_escape_string($link, $_POST['lastname'])."','".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['email']).$_POST['password'])."','".mysqli_real_escape_string($link, $_POST['gender'])."','".mysqli_real_escape_string($link, $_POST['country'])."','".mysqli_real_escape_string($link, $_POST['state'])."')"
       ;

但更大的问题是您直接将 $POST 数据插入 MySQL 数据库,而没有进行真正的过滤。所以你应该考虑做一些更好的验证。但就您当前的数据库问题而言,这应该可以立即解决问题。

关于php - INSERT/VALUES 未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081624/

相关文章:

php - 在 SQL 查询中使用日期时间边距

php - 如何将不同模型的两个不同 id 从 Controller 传递到 View

php - 显示数据库时间戳的时间和日期

mysql - 如何让sql更高效。只需要计数

javascript - 将 URL 作为发布数据传递时,jQuery ajax 返回 404 错误

php - 当我尝试使用 php 连接到数据库时出现很多错误

javascript - 从 Javascript 在 URL 中传递 JSON

php - 需要帮助理解 Magento 产品集合对象和目录/产品模型

php - jQuery 不传递函数

MySQL 过程语言?