問候!sqlite變量
我正在使用SQLite。我想聲明變量,但它給我一個語法錯誤。請幫我找個解決辦法:
Select * from t2 where value= ?
這是我的查詢。現在我怎樣才能將值傳遞給?
?
在此先感謝,珍妮
問候!sqlite變量
我正在使用SQLite。我想聲明變量,但它給我一個語法錯誤。請幫我找個解決辦法:
Select * from t2 where value= ?
這是我的查詢。現在我怎樣才能將值傳遞給?
?
在此先感謝,珍妮
據我所知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。
SQLite被綁定到宿主語言(儘管它在'sqlite'外殼中是一種簡單的語言)。而且,'?'只是位置邊界參數的語法; SQLite還通過':someName'支持命名綁定參數。 – 2011-09-05 16:04:22
用那樣變量的唯一方法是通過使用binding functions。在許多情況下,使用您正在使用的語言構建查詢字符串更容易。
更容易,但更容易出現SQL注入漏洞。 – Quentin 2011-09-05 15:44:32
@Quentin好的,是的。如果你不綁定,你最好消毒,除非你願意冒險把別人輸入「0; drop all tables」作爲它們的搜索值,如果這很有可能的話。 – MPelletier 2011-09-05 18:36:09
您可以使用內存中的臨時表在sqlite中支持變量。查看我的回答https://stackoverflow.com/a/14574227/1435110
查詢是否正確。您使用哪種編程語言/庫來發送查詢? – 2011-04-11 09:20:30
嗨珍妮。如MarvinLabs所述,您應該花一些時間閱讀(FAQ)[http://stackoverflow.com/faq],重新訪問以前的問題並接受一些令人滿意的答案(使用您選擇的問題旁邊的複選標記按鈕接受)。 – MPelletier 2011-04-11 14:39:28