2013-12-14 61 views
1

時,我有以下行準備:PHP MySQL的-PDO:後執行不工作插入

$sql = "INSERT INTO news (title, content) VALUES :title, :content"; 
    $pre = $this->prepare($sql); 
    $pre->bindValue(":title", "xxx"); 
    $pre->bindValue(":content", "yyy"); 
    $pre->execute(); 

我沒有錯誤,但也不會執行查詢(我檢查查詢日誌)。

我嘗試以下更改拼命:

$t="xxx" and $pre->bindValue(":title", $t); (the same also for y) 
$sql = "INSERT INTO `news` (`title`, `content`) VALUES :title, :content"; 
$sql = "INSERT INTO `news` (`title`, `content`) VALUES ':title', ':content'"; 

沒有什麼變化。有趣的是我沒有迴應,沒有警告,沒有錯誤就沒有。 但該查詢未執行。

我發現了類似的帖子,但沒有解決我的問題。

(約$this ...該代碼是從PDO類擴展一個類。)

+0

不要忘記方法['errorInfo()'](http://www.php.net/manual/en/pdo.errorinfo.php)。這是否會給你任何錯誤? –

+0

它返回00000.這是什麼意思? –

+0

如果您正在使用[開發框架](http://codegeekz.com/best-php-frameworks-for-developers/)或至少使用[Propel](http://propelorm.org/)或[Doctrine](http://www.doctrine-project.org/projects/orm.html),你不需要大驚小怪這樣的東西。 – tadman

回答

1

Try:"INSERT INTO news (title, content) VALUES (:title, :content)";

必須用括號括住插入值。

+0

解決了這個問題。 –

+0

如果你解釋了這個和提問者代碼之間的細微差別,它會讓你的答案更好一些。 –

+0

@ moller1111您能否將答案標記爲已接受? :d – MillaresRoo

3

試試這個,你的價值觀應該被裏面的values()

"INSERT INTO news (title, content) VALUES (:title, :content)"; 

,而不是包裹

"INSERT INTO news (title, content) VALUES :title, :content";