使用php5在mysql中注册用户帐户
我正在尝试向MySQL数据库注册一个用户。我已将问题缩小到这段代码使用php5在mysql中注册用户帐户,php,mysql,sql-insert,Php,Mysql,Sql Insert,我正在尝试向MySQL数据库注册一个用户。我已将问题缩小到这段代码 $query = "INSERT INTO `Users`(`User`, `Pass`, `Email`, `RegKey`, `KeyList`, `ID`, `UserType`) VALUES ([".$user."],[".$pass."],[".$email."],[".$regkey."],[''],[". $NumUsers + 1 ."],['Default'])"; $result = mysqli_quer
$query = "INSERT INTO `Users`(`User`, `Pass`, `Email`, `RegKey`, `KeyList`, `ID`, `UserType`) VALUES ([".$user."],[".$pass."],[".$email."],[".$regkey."],[''],[". $NumUsers + 1 ."],['Default'])";
$result = mysqli_query($con,$query);
if($result != false){
//Successfully created the user
mysqli_free_result($result);
$query = "UPDATE Keys SET Paid=1
WHERE Key='".$regkey."'";
$result = mysqli_query($con,$query);
mysqli_free_result($result);
header('Location: '.$website.'register.php?success');
} else{
//Failed to create the user
mysqli_free_result($result);
header('Location: '.$website.'register.php?e3');
}
有人能帮我找出我的PHP有什么问题吗?我查了所有的东西,我想这与查询的结果有关,但我不确定
更新:
我编辑了这个查询,我相信它遵循了mysql语法,但是我仍然得到一个错误
更新的$query
$query = "INSERT INTO Users(User, Pass, Email, RegKey, KeyList, ID, UserType) VALUES ('".$user."','".$pass."','".$email."','".$regkey."','',". $NumUsers + 1 .",'Default')";
更新2:
修复了Sql查询,但我仍然遇到同样的问题
固定查询:
$query = "INSERT INTO `Users`(`User`, `Pass`, `Email`, `RegKey`, `KeyList`, `UserType`) VALUES ('".$user."','".$pass."','".$email."','".$regkey."','','Default')";
您的
INSERT
语句错误。如果未参数化该值,则数据类型为字符串(包括日期)的值必须用单引号括起来,而不是用括号括起来。例如:
INSERT INTO tableName(strCol, dateCol, intCol)
VALUES ('string value', '2013-01-01 00:00:00', 0)
作为旁注,如果变量的值来自外部,则查询易受攻击。请看一看,了解如何预防它。通过使用
PreparedStatements
可以避免在值周围使用单引号。我同意这很容易导致SQL注入。但我认为这里的问题是您试图插入ID
。现在,如果ID
是auto_increment
,那么您不需要在查询中插入或包含它
另一件事,查询本身是不正确的。因为这是在PHP5中,所以应该使用PDO或MySQLi
试试这个
$query = "INSERT INTO `Users`(`User`, `Pass`, `Email`, `RegKey`, `KeyList`, `UserType`) VALUES ('".$user."','".$pass."','".$email."','".$regkey."','','Default')";
那么,这里的实际问题是什么?使用准备好的语句对查询进行正确的格式设置您得到的确切错误消息是什么?