簡體   English   中英

為什么此MySQL語句不起作用?

[英]Why isn't this MySQL statement working?

我有一個帶有列的表Seats ,即SeatIDDateRouteIDSeats 主鍵是SeatsID 席位的值為50,我希望從50中減去用戶在$tickettotal輸入的任何值,然后插入新值。

用戶還必須輸入他們希望旅行的RouteIDDate 我希望將這些值與Seats的新值一起插入Seats表中。

如果另一個用戶輸入相同的DateRouteID則應該更新Seats 否則,應插入一個新記錄,其中包含SeatIDDateRouteID以及Seats的折算值。

我以為該語句應該執行此操作,但我不斷收到錯誤提示,例如

Can't find string terminator '"' anywhere before EOF, although when i put " at the end of the statement i just get another syntax error line 108, near ""') ON DUPLICATE KEY UPDATE Seats=Seats-'"$tickettotal" .

更新

我現在讓它插入很好,盡管在DateRouteID的重復條目上它不會更新Seats :它仍然只是插入一個新值。 Seats - $tickettotal都不起作用。

$dbh->do("INSERT INTO $Stable(Date,RouteID) 
VALUES ('$Tdate','$Rid') ON DUPLICATE KEY UPDATE Seats=Seats-'$tickettotal'");

更新答案

因為我沒有唯一的列,所以我同時使用date和RouteID創建了一個列。

$Tdate =~ s/-//gi;
$dateandrid = $Tdate . $Rid;

第一行刪除連字符,第二行將它們放在一起。 然后使用這些語句獲得我想要的預期效果。

$dbh->do("INSERT INTO $Stable(RouteAndDate,Date,RouteID) VALUES    ('$dateandrid','$Tdate','$Rid') ON DUPLICATE KEY UPDATE Seats=Seats");
$dbh->do("INSERT INTO $Stable(RouteAndDate,Date,RouteID) VALUES ('$dateandrid','$Tdate','$Rid') ON DUPLICATE KEY UPDATE Seats=Seats-'$tickettotal'");

您必須避免通過參數綁定進行SQL注入:

$dbh->do( qq{
     INSERT INTO $Stable(Date, RouteID) 
     VALUES (?, ?)
     ON DUPLICATE KEY UPDATE Seats=Seats-?
     },
     undef,
     $Tdate, $Rid, $tickettotal
);

暫無
暫無

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

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