gpt4 book ai didi

php - Laravel - PDO - 动态表名

转载 作者:行者123 更新时间:2023-11-28 23:14:39 26 4
gpt4 key购买 nike

我正在尝试删除具有动态名称的表。我实际上动态生成和操作表,但这是最简单的查询。

当我使用原始 PDO 时一切正常,如下所示:

// PURE PDO VERSION
$this->db = new PDO(
'mysql:host=' . $configParams['db_hostname']
. ';port=' . $configParams['db_port']
. ';dbname=' . $configParams['db_name']
. ';charset=utf8mb4',
$configParams['db_username'],
$configParams['db_password']
);

$this->ps_DeleteTempTable = $db->prepare(
"DROP TABLE `:tableName`"
);

但是当我使用 Laravel 做同样的事情时,就像这样:

// LARAVEL VERSION
$pdo = DB::connection()->getPdo();

$this->ps_DeleteTempTable = $pdo->prepare(
"DROP TABLE `:tableName`"
);

我收到以下错误:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'testdb.?' doesn't exist

我在 SO 上看到过其他具有类似目标的问题,但它们都表明我编写的第一个查询无法正常工作,而我已经使用它一年多了。

谢谢,

最佳答案

您应该在构建 SQL 时将表名添加为值...

$pdo = DB::connection()->getPdo();

$this->ps_DeleteTempTable = $pdo->prepare(
"DROP TABLE `".$tableName."`"
);

如果不使用反引号,您可能会得到一些奇怪的结果,因为名称可能是保留字。一般来说,最好设计数据库不要使用这些,但有些是很常见的(例如“订单”)

关于php - Laravel - PDO - 动态表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com