簡體   English   中英

使用 dbi 的 perl 中的一個簡單錯誤

[英]A simple error in perl using dbi

我的准備語句中有錯誤

$sqlst = $dbh->prepare('SELECT * FROM starter_trot WHERE UserId = 2345' ) or die "Couldn't prepare statement: " . $dbh->errstr;
$sqlst->execute($userid) or die "Couldn't execute statement: " . $sqlst->errstr;
my @data;
print"hai";
while (@data = $sqlst->fetchrow_array())
{
print "**";
}

執行語句和准備語句肯定不會失敗。

[WHERE UserId = 2345]這是它失敗的部分。當我在數據庫中運行查詢時,它會返回值。但是當我通過腳本運行查詢時它失敗(但沒有編譯或運行時問題)是什么問題。是在准備中我們必須給出?(綁定變量而不是實際值?)~~

使用嚴格,使用警告,使用 DBI 時,使用 RaiseError。 當您的 SQL 語句中沒有占位符時,您正在使用一個綁定值執行。 當然,您應該會以您的方式看到錯誤消息(因為 PrintError 是默認設置),但 RaiseError 比到處撒“或死...”更容易。

數據庫可能會以大寫形式返回列名。 嘗試:

$sqlst = $dbh->prepare('SELECT * FROM starter_trot WHERE USERID = 2345' ) or        die "Couldn't prepare statement: " . $dbh->errstr;
$sqlst->execute($userid) or die "Couldn't execute statement: " . $sqlst->errstr;

我敢打賭它會奏效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM