数据未插入表中

时间:2013-12-29 19:11:22

标签: php

我的注册系统突然崩溃了。最初它只需要三个数据 - 用户名,密码和电子邮件 - 但我现在已经包含了由脚本生成的验证码,我不知道是什么打破了它。我遇到了麻烦,没有错误出现。它说的只是“错误”,如果数据库插入不起作用,这就是我告诉它输出的文本。

有什么想法吗?

register.php

require 'core/init.php';
require 'lib/password.php';

$user = $_POST['user'];
$pass = password_hash($_POST['pass'], PASSWORD_DEFAULT);

error_reporting(E_ALL);
ini_set('display_errors', 1);

$randomString = substr(md5(rand()),0,7);

$query = $db->prepare("INSERT INTO users (user, pass, email, ver) VALUES (:user, :pass, :email, :ver)");
$query->bindParam(':user', $user);
$query->bindParam(':pass', $pass);
$query->bindParam(':email', $email);
$query->bindParam(':ver', $randomString);

if($query->execute()) {
$_SESSION['reqact'] = 1;
header('Location: index.php');
}
else {
echo "Error.";
}

芯/的init.php

<?php
session_start();
$db = new PDO('logindataisfine');

if(isset($_SESSION['id'])) {
    $i = $_SESSION['id'];
}
else if($_SESSION['reqact'] == 1) {
    echo "Please <a href='activate.php'>verify your account.</a>";
    }
else {
echo "Please <a href='login.php'>log in.</a>";
$guest = True;
}

2 个答案:

答案 0 :(得分:5)

您有$user = $_POST['user']; $pass = password_hash($_POST['pass'], PASSWORD_DEFAULT);但没有$email= $_POST['email'];

没有该变量会破坏您的查询。

正如Marcel(Korpel)在下面的评论中指出的那样(谢谢Marcel ),您可以检查是否有任何变量设置或为空。

例如:

if(isset($_POST['variable'])){ // do or show something }

if(empty($_POST['variable'])){ // do or show something }

答案 1 :(得分:0)

你的sql语句中可能出现错误(是实际的列名吗?)

要获取sql错误,您回显“错误”字符串的地方也会抛出: 的print_r($查询 - &GT; errorInfo中());

if($query->execute()) {
$_SESSION['reqact'] = 1;
header('Location: index.php');
}
else {
echo "Error.";
print_r($query->errorInfo()); //<- print sql error
}

一旦你确切知道错误是什么,你就可以更容易地修复它。