繁体   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