查询这个错误是什么?

时间:2015-12-23 12:24:05

标签: php mysql sql

该代码有什么问题? - 它一直拒绝创建帐户。

$query = "
    INSERT INTO `accounts`(`username`, `dispname`, `email`, `password`, `type`, `blocked`, `points`)
    VALUES ($disname,$username,$email,$password,1,false,0)";        
$result = mysql_query($query);
if($result){
    $Registered = "You have registered successfully.";
} else {
    $ERROREMAIL = "There Were an Error Registering your email, please contact our support.";    
}

我完全糊涂了。

顺便说一下,这是数据库的结构,希望有人帮忙。

CREATE TABLE `accounts` (
  `id` int(11) NOT NULL,
  `username` varchar(255) DEFAULT NULL,
  `dispname` varchar(255) NOT NULL DEFAULT 'someone',
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `type` int(10) NOT NULL,
  `blocked` tinyint(1) NOT NULL DEFAULT '0',
  `points` int(10) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

ALTER TABLE `accounts`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `username` (`username`);

ALTER TABLE `accounts`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2;

4 个答案:

答案 0 :(得分:2)

尝试此查询:

$query = "INSERT INTO `accounts` 
(`username`, `dispname`, `email`, `password`, `type`, `blocked`, `points`) 
VALUES ('$disname','$username','$email','$password',1,0,0)";

有什么变化?

  • 在字符串变量上添加单引号。
  • 还将阻止列的值更改为0.

答案 1 :(得分:2)

OP的评论:

  

“$ connection = mysqli_connect($ DBHOST,$ DBUSER,$ DBPASS,$ DBNAME);还有mysqli_query($ connection,$ query); - Ahmed Alaa 1小时前”

这里有两件事不对。您正在与mysqli_进行关联,然后使用mysql_进行查询。

$result = mysql_query($query);

应该读作

$result = mysqli_query($connection, $query);

那些不同的API不会混用。您必须使用相同的连接到查询。

然后,在值中忽略变量(对于字符串)的引号。

VALUES ($disname,$username,$email,$password,1,false,0)";

应为:

('$disname','$username','$email','$password',1,false,0)

但这让你对SQL injection开放。

请参阅以下链接http://php.net/manual/en/mysqli.error.phphttp://php.net/manual/en/function.error-reporting.php 并在测试期间将其应用于您的代码。

在测试过程中,这对您没有帮助,以便获得真正的错误:

else {
    $ERROREMAIL = "There Were an Error Registering your email, please contact our support.";
}

这将:

else {
    echo "Error: " . mysqli_error($connection);
}

一旦没有错误,您可以将其设置回原始方法。

答案 2 :(得分:0)

您需要将字符串作为字符串而不是整数传递

试试这个:

$query = "
INSERT INTO `accounts`(`username`, `dispname`, `email`, `password`, `type`, `blocked`, `points`)
VALUES ('$disname','$username','$email','$password',1,false,0)"; 

答案 3 :(得分:0)

谢谢大家。

解决方案就是这样。

将您的php版本更新为PHp 7_0_0。 将phpmyadmin更新为4_5_2。 将MySql更新为5_6_27。

更新旧mysql的用法 - > PDO。