2014-01-07 176 views
0

我想插入使用準備PDO語句,但它似乎並沒有工作,我希望它是如何工作。我的繼承人代碼:PDO插入不插入

$conn = new PDO('mysql:host=localhost;dbname=myDB', $username, $password); 

$sql = "INSERT INTO posts (`text`,`name`) VALUES (:text,:username)"; 
$q = $conn->prepare($sql); 
$q->bindParam(':text', $_GET['textField'], PDO::PARAM_STR); 
$q->bindParam(':username', $_SESSION['myusername'], PDO::PARAM_STR); 
$q->execute(); 
print_r($q->errorInfo()); 

的問題是,這並不做任何事情,我不知道爲什麼,我使用下面的準則here幫我做。

編輯:當我使用的print_r我碰到下面的MySQL錯誤:

Array ([0] => 42000 [1] => 1064 [2] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''text','name') VALUES ('a','user')' at line 1) 
+1

'TEXT'是MySQL中的一種數據類型。嘗試把它放在蜱中。 –

+1

當你激活某種'ERRMODE_SILENT'時,你期望得到任何錯誤信息(這可能會幫助你解決問題)?千萬不要在生產環境中這樣做。始終實施適當的異常處理。 – DanFromGermany

+0

@JohnConde我剛剛做到了這一點,但它並沒有失去工作 – user3144542

回答

1

因爲文字是MySQL中的類型(看here),查詢將失敗,因爲語法是錯誤的。

在您的文本名稱周圍添加標記,然後重試。

$sql = "INSERT INTO posts (text,name) VALUES (:text,:username)"; 
          ---- 
        This is the error. 
+0

我做過了,但仍然出現錯誤,請參閱上面的內容 – user3144542