gpt4 book ai didi

php - DESCRIBE 表时发生 PDO 异常

转载 作者:行者123 更新时间:2023-11-29 10:03:41 29 4
gpt4 key购买 nike

我收到错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 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 "mytable" at line 1

当我使用以下函数调用时

$fields = Table::getFieldsForTable('mytable');

如果我硬编码:t添加到我的表名,然后代码就可以正常执行。

 public static function getFieldsForTable ($table ) {
$sql = 'DESCRIBE :t';

try {
/**
* @var $db \PDO
*/
$db = static::getDB();
$stmt = $db->prepare($sql);

$stmt->bindValue(':t', $table, PDO::PARAM_STR);

$stmt->execute();

return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (\PDOException $e){
echo "PDO ERROR" . $e->getMessage();
}
}

我在项目的其他部分一遍又一遍地使用相同的代码片段,但我看不出我在这里做错了什么。

有什么帮助吗?

最佳答案

只是因为表名或列名不能用 PDO 中的参数替换 - 这只是其工作方式的基本限制。

查看重复问题的答案: Can PHP PDO Statements accept the table or column name as parameter?

https://stackoverflow.com/a/15990488/180733是一个很好的解释。

如果您担心接受任意表名的安全性,请考虑使用 SHOW TABLES 预先获取所有表名,然后使用该列表验证建议的表名in_array($table,$tables)

关于php - DESCRIBE 表时发生 PDO 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52411627/

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