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'];
?>
解决方案
Did you check MySQL docs?
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?