插入数据错误代码23000 mysql pdo php

时间:2014-09-12 19:44:22

标签: php mysql pdo

我的数据库中有一张表

我想在其中插入一些数据

但我一直得到pdo错误代码23000

我手动尝试了查询,但它确实有效,所以问题不在于查询

我的代码:

<?
include ('config.php');
$text=$_POST['text'];
if (!isset ($text)) exit();
$query=$db->prepare("INSERT INTO posts (post,userid,votes) VALUES (?,?,0)");
$query->bindValue(1,$text,PDO::PARAM_STR);
$query->bindValue(2,$id,PDO::PARAM_INT);
$re=$query->execute();
if ($re)
echo 'Added';
else die($query->errorcode()." ".$query->errorinfo());
?>

和配置看起来像

<?
session_start();
try{
$db=new PDO ('mysql:host=localhost;dbname=test;charset=utf8','root','');
}
catch (PDOException $error) {
    echo $error->getmessage();
}
$id=$_SESSION['id'];
$username=$_SESSION['username'];
$password=$_SESSION['password'];
?>

3 个答案:

答案 0 :(得分:1)

您检查过MySQL文档吗?

http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html#error_er_dup_key

看起来你在DB中有一个重复的键。我猜用户名。

如果你在userid上有自动增量,则无需在创建时传递它。

查看你的代码:

  1. 从会话中获取用户
  2. 将此用户添加到DB
  3. 因此,如果您多次运行脚本,则会产生23000错误。

    是的,用户ID是如何进入会话的?

答案 1 :(得分:0)

1062错误代码表示“重复输入”

答案 2 :(得分:0)

我建议使用23000错误代码的人尝试:

print_r($dbObject->errorInfo()) ;

由于存在错误说明,因此您很可能会自己发现问题。