2014-09-12 120 views
0

我有一個表,我DATABSE插入數據錯誤代碼23000 MySQL的PDO PHP

我試圖插入裏面

一些數據,但我不斷收到PDO錯誤代碼23000

我試過手動查詢和它的工作,因此proplem不與查詢

我的代碼:

<? 
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']; 
?> 
+1

你爲什麼使用'mysql_real_escape_string'?擺脫這一點!這裏沒用。 – 2014-09-12 19:45:07

+2

混合MySQL API。只要刪除'$ text = mysql_real_escape_string($ text);' – 2014-09-12 19:45:21

+1

你看到的不僅僅是'23000'代碼嗎?一個* actual *錯誤消息,偶然? – 2014-09-12 19:46:33

回答

1

你檢查MySQL文檔?

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

看起來你有DB複製的鑰匙。我的猜測用戶名。

如果你在userid上有一個自動增量,不需要在創建時傳遞它。

看你的代碼是:

  1. 獲取用戶從會話
  2. 添加該用戶到DB

所以,如果你運行腳本超過一次,它會給予23000錯誤更多。

是的,userid是如何進入session的?

+0

23000是SQL狀態,不是錯誤,錯誤是1062。 – tiomno 2017-06-06 07:24:51