Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 登记表不起作用_Php_Mysqli - Fatal编程技术网

Php 登记表不起作用

Php 登记表不起作用,php,mysqli,Php,Mysqli,我正在使用此代码注册用户,但它不起作用。它总是呼应“注册失败”。我尝试了很多次,但都没有成功 if(isset($_POST['sub'])) { $uname = $_POST['uname']; $email = $_POST['email']; $pass_hash = PassHash::hash($_POST['pass']); $sq="SELECT * FROM user WHERE username='$uname'"; //echo $

我正在使用此代码注册用户,但它不起作用。它总是呼应“注册失败”。我尝试了很多次,但都没有成功

if(isset($_POST['sub']))
{
    $uname = $_POST['uname'];
    $email = $_POST['email'];
    $pass_hash = PassHash::hash($_POST['pass']);

    $sq="SELECT * FROM user WHERE username='$uname'";
    //echo $sq;
    $re=mysqli_query($link,$sq);
    if(mysqli_num_rows($re)>0)
    {
        echo "Username  already taken !";
    }
    else
    {
        $SQ = "SELECT * FROM user WHERE email='$email'";
        //echo $SQ;
        $res=mysqli_query($link,$SQ);
        if(mysqli_num_rows($res)>0)
        {
            echo "Email already taken !";
        }
        else
        {
            $SQL = "INSERT INTO user(username,email,password) VALUES('$uname','$email','$pass_hash')";
            //echo $SQL;
            $result = mysqli_query($link,$SQL);
            if(!$result)
            {
                echo "Registration failed !";
            }
            else
            {
                echo"register done";
            }
        }
    }
}
以下是表格结构

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(20) NOT NULL,
  `password` varchar(100) NOT NULL,
  `email` varchar(20) NOT NULL,
  `status` int(11) default '0',
  `sdate` date NOT NULL,
  `s_type` varchar(2) NOT NULL,
  `amount` decimal(10,2) NOT NULL,
  PRIMARY KEY  (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

有人知道问题出在哪里吗?

您的表中有一堆
非空
字段,但您没有给它们分配任何值,因此您的
插入
查询失败。

除了突出的SQL注入漏洞是一个问题外,
响应mysqli_错误($link)
打印什么,查询的实际结果是什么?数据库中有错误吗?如果我只是根据提供的查询进行猜测,我可能会建议将
user
包装在后面的勾号中,因为它在MySQL中可能是一个保留字。(通常以同样的方式包装其他对象标识符是最安全的。)@andrewsi它显示一个空白页面关于
$result=mysqli_query($link,$SQL)或die(mysqli_error($link))?在你的问题中,你说它总是回显注册失败。页面是空白的还是说注册失败?