Php SQLSTATE[HY000]:一般错误:1366不正确的整数值:
我在使用PDO时遇到了一些问题。这一切似乎都是正确的,但我得到了这个错误Php SQLSTATE[HY000]:一般错误:1366不正确的整数值:,php,mysql,pdo,Php,Mysql,Pdo,我在使用PDO时遇到了一些问题。这一切似乎都是正确的,但我得到了这个错误 SQLSTATE[HY000]: General error: 1366 Incorrect integer value: ':permissao' for column 'permissao' at row 1\n 下面是打印输出的代码 $this->nome = $nome; $this->email = $email; $salt = $this->generateSalt()
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: ':permissao' for column 'permissao' at row 1\n
下面是打印输出的代码
$this->nome = $nome;
$this->email = $email;
$salt = $this->generateSalt();
$permissao = 10;
$activo = 0;
#encripta chama a funcao para encriptar a password do utilizador
$this->password = $this->pwdEncript($password, $salt);
$params = array('nome'=>$this->nome,
'email'=> $this->email,
'password'=> $this->password,
'salt'=>$salt,
'permissao'=>$permissao,
'activo'=>$activo);
$sql = "INSERT INTO sys_users(nome,email,password,salt,permissao,activo)
VALUES(':nome',':email',':password',':salt',':permissao',':activo')";
try
{
$sth = $this->db->prepare($sql);
$sth->execute($params);
}
catch(PDOException $e)
{
echo 'Erro ao inserir na base de dados'.$e->getMessage().'\n';
}
Permissao是mysql表上的一个INT
很高兴在这件事上得到了帮助;) 试试这个:
$sql = "INSERT INTO sys_users(nome,email,password,salt,permissao,activo)
VALUES(:nome,:email,:password,:salt,:permissao,:activo)";
试试这个:
$sql = "INSERT INTO sys_users(nome,email,password,salt,permissao,activo)
VALUES(:nome,:email,:password,:salt,:permissao,:activo)";
已经在评论中说过了,但是看起来你不需要在占位符周围加引号。只需依靠预先准备好的语句机制就可以为您做到这一点 注意:对于MySQL,PDO默认为模拟准备好的语句。为了获得额外的安全性,您可能希望将其设置为使用真正的预处理语句
$pdo -> setAttribute (PDO::ATTR_EMULATE_PREPARES, false);
已经在评论中说过了,但是看起来你不需要在占位符周围加引号。只需依靠预先准备好的语句机制就可以为您做到这一点 注意:对于MySQL,PDO默认为模拟准备好的语句。为了获得额外的安全性,您可能希望将其设置为使用真正的预处理语句
$pdo -> setAttribute (PDO::ATTR_EMULATE_PREPARES, false);
$permissao的值是多少?@PeeHaa如果我将其转换为int,则得到相同的结果。我已经更新了代码。基本上是一个从1到10的数值。我有一个隐秘的怀疑,就是你在所有参数占位符周围加的引号。由于准备好的语句会为您转义插入的字符串,所以您不需要它们,而且它们可能给您带来麻烦。@GordonM,谢谢!成功了!$permissao的值是多少?@PeeHaa如果我将其转换为int,则得到相同的结果。我已经更新了代码。基本上是一个从1到10的数值。我有一个隐秘的怀疑,就是你在所有参数占位符周围加的引号。由于准备好的语句会为您转义插入的字符串,所以您不需要它们,而且它们可能给您带来麻烦。@GordonM,谢谢!成功了!工作得很有魅力!谢谢!在我尝试之前,我已经放松了好几天。工作得很有魅力!谢谢!在我尝试之前,我已经放松了好几天。