2011-04-11 43 views
1

問候!sqlite變量

我正在使用SQLite。我想聲明變量,但它給我一個語法錯誤。請幫我找個解決辦法:

Select * from t2 where value= ? 

這是我的查詢。現在我怎樣才能將值傳遞給?

在此先感謝,珍妮

+4

查詢是否正確。您使用哪種編程語言/庫來發送查詢? – 2011-04-11 09:20:30

+0

嗨珍妮。如MarvinLabs所述,您應該花一些時間閱讀(FAQ)[http://stackoverflow.com/faq],重新訪問以前的問題並接受一些令人滿意的答案(使用您選擇的問題旁邊的複選標記按鈕接受)。 – MPelletier 2011-04-11 14:39:28

回答

2

據我所知SQLite不支持這樣的東西。

的語法是實現綁定參數(與使用它們準備的語句)庫的標準,但你需要做的是,在查詢數據庫,而不是在數據庫本身不同的編程語言。

具體細節當然取決於編程語言和庫。

在Perl,例如,你可以:

my $sth = $dbh->prepare("Select * from t2 where value=?"); 
foreach my $value (@values) { 
    $sth->execute($value); 
    $row = $sth->fetchrow_hashref; 
    [...] 
} 

鮑比表在各種語言some more examples

+1

SQLite被綁定到宿主語言(儘管它在'sqlite'外殼中是一種簡單的語言)。而且,'?'只是位置邊界參數的語法; SQLite還通過':someName'支持命名綁定參數。 – 2011-09-05 16:04:22

0

用那樣變量的唯一方法是通過使用binding functions。在許多情況下,使用您正在使用的語言構建查詢字符串更容易。

+2

更容易,但更容易出現SQL注入漏洞。 – Quentin 2011-09-05 15:44:32

+0

@Quentin好的,是的。如果你不綁定,你最好消毒,除非你願意冒險把別人輸入「0; drop all tables」作爲它們的搜索值,如果這很有可能的話。 – MPelletier 2011-09-05 18:36:09