2011-04-07 51 views
0

執行我正在創建一個使用PHP5/SQLite3的博客應用程序。要在數據庫中插入帖子,我正在執行下面所寫的查詢。PDO:插入查詢包含'不在SQLite3中使用PHP 5.3.4與

$db=connectToDatabase(); 
$tempcontent=$db->escapeString($tempcontent); 
$query = "INSERT INTO posts VALUES (null,$temptitle, $tempcontent, $tempcategory, $tempauthor)"; 
$db->query($query); 
$db=disconnectToDatabase(); 

我有問題,當文本輸入含有「或「時,有」,是沒有得到執行查詢的。如果'是不是有那麼‘顯示在逃逸(\’)在。瀏覽器 對不起,我忘了提: connectTodatabase()功能是提供連接到數據庫非常普遍的方式爲:

try { 
    $db1 = new PDO("sqlite:blog.db"); 
}catch(PDOException $exception){ 
    die($exception->getMessage()); 
} 
return $db1; 
+0

您使用的是一些自定義的DB類。你怎麼能期望我們知道這個班正在做什麼?但是它可能做錯了事 - 只是因爲你在查詢中傳遞參數而不是分開。 – ThiefMaster 2011-04-07 07:22:43

+0

connectTodatabase()函數提供了非常一般的連接數據庫的方式。 as: 'code' try { \t $ db1 = new PDO(「sqlite:blog.db」); catch(PDOException $ exception){ \t die($ exception-> getMessage()); \t} \t return $ db1; 'code' – rtcoms 2011-04-07 07:29:53

+2

'escapeString'是borked,表明(並且確實,贊成準備好的語句,而不是字符串構建/轉義)。 – Wrikken 2011-04-07 08:00:13

回答

0

剛剛發佈全班同學,因爲我們沒有讀心術或通靈這裏

The probably pr你是不是逃避你在查詢中包含的數據。

二者必選其一mysql_real_escape_string():

http://php.net/manual/en/function.mysql-real-escape-string.php

或者PDO準備語句:

http://www.php.net/manual/en/pdo.prepare.php

+0

我懷疑mysql_real_escape_string()會做什麼好... – 2011-04-07 08:23:41

+0

我還沒有創建任何類。這只是一個函數,我傳遞$ temptitle,$ tempcontent,$ tempcategory和$ tempauthor,然後在INSERT查詢中使用這些參數。 – rtcoms 2011-04-07 08:23:59