我有一个看起来像这样的字符串:
use Illuminate\Database\Capsule\Manager as DB;
DB::select("SELECT id FROM table_?", [$var]);
因此查询看起来像SELECT id FROM table_users
。
问题是我收到语法错误:
您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取在'?'附近使用的正确语法。在第1行
为什么不雄辩(或通常说PDO)替换附加在字符串上的?
?
答案 0 :(得分:3)
PDO不只是取代吗?与其他字符串。它执行查询的语义解析,构造一个执行计划,然后使用您绑定到该查询的值执行该计划。没有表名,您将无法建立执行计划。因此,您不能像这样绑定表名中的任意字符串。您必须改为使用字符串串联:
DB::select("SELECT id FROM table_" . "users");
或者,因为您已经拥有所有字符串作为文字,所以您自己动手做吧:
DB::select("SELECT id FROM table_users");