问题
i have a table in my databse
i am trying to insert some data inside it
but i keep getting pdo error code 23000
i tried the query manually and it worked so the proplem isn't with the query
my code :
<?
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());
?>
and config look like
<?
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'];
?>
回答1:
Did you check MySQL docs?
http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html#error_er_dup_key
Looks like you have a duplicate key in DB. My guess userid.
If you have an auto-increment on userid no need to pass it on creation.
Looking at your code it:
- Gets user from session
- Adds this user to DB
So if you run script more than once it'll give 23000 error.
Yes and how did userid got in to session?
回答2:
1062 error code means "dublicate entry"
回答3:
I suggest people with a 23000 error code to try :
print_r($dbObject->errorInfo()) ;
You're most likely to find the problem yourself as there's the error description.
来源:https://stackoverflow.com/questions/25815706/inserting-data-error-code-23000-mysql-pdo-php