2014-03-06 53 views
0

我總是使用普通查詢將數據插入到數據庫中,但現在我想使用預先準備好的語句。我已經在使用語句來選擇我所有文件中的數據,但插入從未奏效......現在我再次用完了想法。也許有人可以看到我做錯了什麼。插入語句不起作用

$animeId  = $_POST['animeId']; 
$username = $_POST['username']; 
$rating   = $_POST['rating']; 
$story   = $_POST['story']; 
$genre   = $_POST['genre']; 
$animation = $_POST['animation']; 
$characters = $_POST['characters']; 
$music   = $_POST['music']; 

//Datum auslesen 
$date = date("Y-m-d H:i:s"); 


if($insertRating = $con->prepare("INSERT INTO anime_rating (animeId, rating, story, genre, animation, characters, music, user, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?")) 
{ 
    $insertRating->bind_param("iiiiiiiss", $animeId, $rating, $story, $genre, $animation, $characters, $music, $username, $date); 
    $insertRating->execute(); 
    $insertRating->close(); 
} 
+0

'(?,?,?,?,?,?,?,?,?「)''是錯誤的..」在第一個之後) –

+0

非常感謝您..這就是問題所在。我真的不知道該說些什麼 – Taiga

回答

5

您在查詢中有一個錯誤的逗號:

music, user,) VALUES (?, ?, ?, ?, ?, ?, ?        
      ^^^ 
      HERE 

應該

music, user) VALUES (?, ?, ?, ?, ?, ?, ?  
1

在聲明中:

INSERT INTO anime_rating (
animeId, 
rating, 
story, 
genre, 
animation, 
characters, 
music, 
user /* 8 columns */) 
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?") /* 10 parameters */ 

有上市8列將值插入到10中指定的參數中值部分。同樣如指出的那樣,值列表中還有額外的逗號。

列必須的參數個數和參數在下面的語句結合數相匹配的數量:在聲明中

`$insertRating->bind_param("iiiiiiiss", $animeId, $rating, $story, $genre, $animation, $characters, $music, $username, $date);` 
0

兩個錯誤:

INSERT INTO anime_rating (animeId, rating, story, genre, animation, characters, music, user,) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?" 
                          ^here and      ^^ 
  1. 刪除逗號
  2. 在字符串末尾添加一個右括號。
  3. 移除一個,?

此外應該從結合砍一個i S:

$insertRating->bind_param("iiiiiiss", $animeId, $rating, $story, $genre, $animation, $characters, $music, $username, $date); 
+0

好吧,我已經更新了問題中的代碼,但它仍然無效。此外,我不確定「字符串」是否是在數據庫中插入日期的正確類型。 – Taiga

+0

您在字符串結尾之前忘記了右括號(請參閱代碼末尾)。 –

+2

@ user3084925您仍然綁定10個參數:'$ insertRating-> bind_param(「iiiiiiiss」,$ animeId,$ rating,$ story,$ genre,$ animation,$ characters,$ music,$ username,$ date);'但是指定了9個綁定變量。您需要9列,9個參數和9個綁定變量。 –

0
if($insertRating = $con->prepare("INSERT INTO anime_rating (animeId, rating, story, genre, animation, characters, music, user, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?")) 

最後(「)應該被放置在第一後)在端

新代碼:

if($insertRating = $con->prepare("INSERT INTO anime_rating (animeId, rating, story, genre, animation, characters, music, user, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)")