Laravel 5.5和DB::raw无法执行查询

Laravel 5.5和DB::raw无法执行查询,laravel,eloquent,Laravel,Eloquent,我需要使用DB::raw执行一个查询,但它似乎根本不起作用。 出于某种原因,Laravel不执行绑定,查询失败。我尝试了很多查询、事件,甚至一个简单的查询都不起作用 使用Illumb\Support\Facades\DB; $query='从我的表格中选择id'; $results=DB::select DB::原始$query, [ “我的表格”=>“广告”, ] ; dd$结果; 错误 SQLSTATE[42000]:语法错误或访问冲突:1064 您的SQL语法有错误;检查手册 对应于您的M

我需要使用DB::raw执行一个查询,但它似乎根本不起作用。 出于某种原因,Laravel不执行绑定,查询失败。我尝试了很多查询、事件,甚至一个简单的查询都不起作用

使用Illumb\Support\Facades\DB; $query='从我的表格中选择id'; $results=DB::select DB::原始$query, [ “我的表格”=>“广告”, ] ; dd$结果; 错误

SQLSTATE[42000]:语法错误或访问冲突:1064 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行的“?”附近SQL:select id from:my_表


有什么想法吗

如果出现语法错误,请尝试删除$query中的:,这样就可以了,而且您的语句还需要一个条件,如select*from table\u name,其中id=?

您的绑定语法似乎就是问题所在。数组中缺少分号:

$query=从my_表中选择id; $results=DB::select DB::原始$query, [ “:我的表格”=>“广告”, ] ; 错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1 (SQL: select id from :my_table)"
表示:查询中的my_表未替换为Advertision\uu RentAdvertisions。

如和中所述,不能仅替换表名或列

除非您简化了您的示例,并且进行了比您提到的更多的操作,否则我建议只使用查询生成器:

DB::table('advertisement__rentadvertisements')->get('id')

不能只替换表名或列

请参阅更多:

更改:

$query = 'select id from :my_table';

$results = DB::select(
    DB::raw($query),
    [
        'my_table' => 'advertisement__rentadvertisements',
    ]
);
致:


希望它能对您有所帮助。

您有什么理由将上述操作作为原始查询而不使用查询生成器上的方法吗?这不是我的最终查询,这只是一个例子,说明简单查询不起作用。如果可以的话,请不要只是提供您试图实现的目标的简化版本,因为这意味着您通常不会得到您想要的帮助/建议。你能不能把你实际需要的代码添加到你的问题中,如果可以的话,还可以简单地概述一下你想要实现的目标以及原因:谢谢Ross,问题是表名,我用了一个占位符。如果我删除它,查询就会工作。
$results = DB::table('advertisement__rentadvertisements')->select('id')->get();