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))代码>?在你的问题中,你说它总是回显注册失败。页面是空白的还是说注册失败?