Laravel:查询构建器
Posted
技术标签:
【中文标题】Laravel:查询构建器【英文标题】:Laravel: Query builder 【发布时间】:2021-09-25 06:33:28 【问题描述】:可能是个愚蠢的问题,如何在 select 语句中正确声明 ID?
public function generatefinalconfirmation($id)
$booking = Booking::findOrFail($id);
$flightin = DB::select('SELECT b.bookingname, f.origin FROM Bookings B JOIN Flights F ON B.Flightin = F.FlightId WHERE B.ID = id');
那个代码给了我所有的数据,而where b.id = $id
给了我一个错误信息。
谢谢
编辑:感谢大家的回答,对于所有菜鸟的错误,我们深表歉意
【问题讨论】:
观看您的报价。你的意思是where b.id=' . $id
?变量不会在单引号中展开(这是正确的术语吗???)
如果 TO 的意思是,查询对 SQL 注入开放
"...给我一条错误信息" 那会是什么错误信息?
而b.id
和B.ID
不一样
【参考方案1】:
这样可以防止 SQL 注入并使代码更具可读性:
public function generatefinalconfirmation($id)
$booking = Booking::findOrFail($id);
$flightin = DB::table('Bookings AS B')
->select([ 'b.bookingname', 'f.origin'])
->join('Flights AS F', 'B.Flightin', 'F.FlightId')
->where('B.ID', $id);
【讨论】:
可能需要as
关键字作为别名。我看到 QueryBuilder 对此很挑剔。以上是关于Laravel:查询构建器的主要内容,如果未能解决你的问题,请参考以下文章