在laravel中执行如下所示的查询时
$result = DB::select(
'SELECT p.f1 FROM `tab1` m
INNER JOIN `tab2` p
ON m.id= p.fk
WHERE m.good_id = :good_id AND p.good_id = :good_id LIMIT 1',
['good_id' => 12]
);
获取了一个错误sqlstate[hy093]:无效的参数号。
找到了解决办法。
我们可以添加以下代码
'options' => [
PDO::ATTR_EMULATE_PREPARES => true,
],
到config/database.php的mysql数组。
但是从安全的Angular 来看,使用它会有什么问题吗?https://github.com/microsoft/msphpsql/issues/46
上面帖子提到的问题还没解决?
1条答案
按热度按时间o2rvlv0m1#
是的,安全问题也适用于你。然而,有另一个快速解决你的问题,不涉及
PDO::ATTR_EMULATE_PREPARES
```$result = DB::select(
'SELECT p.f1 FROM
tab1
mINNER JOIN
tab2
pON m.id= p.fk
WHERE m.good_id = :good_id AND p.good_id = :good_id0 LIMIT 1',
['good_id' => 12, 'good_id0' => 12]
);
$result = DB::select(
'SELECT p.f1 FROM
tab1
mINNER JOIN
tab2
pON (m.id= p.fk AND m.good_id = p.good_id)
WHERE m.good_id = :good_id LIMIT 1',
['good_id' => 12]
);