【问题标题】:PDO query with php variables [duplicate]带有php变量的PDO查询[重复]
【发布时间】:2014-10-05 02:05:33
【问题描述】:

为什么这条线不起作用:

$db_Table = "myTable";

$pdo->prepare("INSERT INTO :db_Table VALUES (...

$query->execute(array(
    ':db_Table' => $db_Table,  

而这个工作:

$pdo->prepare("INSERT INTO myTable VALUES (...

我该如何解决?

【问题讨论】:

  • 你不能在准备好的语句中使用表名、字段名或其他标识符作为变量。您需要通过连接或以其他方式替换您的标识符来构建您的基本查询,然后prepare 该结果。
  • 是的,但是这个也不起作用:$pdo->prepare("INSERT INTO $db_Table.

标签: php pdo


【解决方案1】:

不能在 PDO 查询中替换表名。

您可以在以下主题中找到更多信息 Can PHP PDO Statements accept the table or column name as parameter?

【讨论】:

    【解决方案2】:

    很遗憾没有绑定表名的内置函数,你必须自己做:

    $db_Table = "myTable";
    $query = $pdo->prepare("INSERT INTO `$db_Table` VALUES (...)");
    $query->execute();
    

    但这仍然没有被转义,一种解决方法是有一个表数组,然后检查它是否存在:

    $list_of_tables = array('myTable1', 'myTable2', 'myTable3');
    if(!in_array($db_Table, $list_of_tables){
      //table does not exist !
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2013-10-08
    • 2014-04-30
    • 2011-11-28
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多