【问题标题】:PHP PDO MYSQL/MARIADB How to query a view? (view not found error)PHP PDO MYSQL/MARIADB 如何查询视图? (查看未找到错误)
【发布时间】:2021-08-19 20:17:16
【问题描述】:

我有一个 MariaDB 视图和一个简单的 PDO 查询来选择所有数据。

使用常规表格完全没有问题。我唯一遇到的问题是,一旦我使用 VIEW,就会收到视图不存在的错误。

[826]::sqlstate[42s02]: base table or view not found: 1146 table 'kafexxxx_diner.reservationsxmonth' 不存在

::select reservationsxmonth.property,reservationsxmonth.period,reservationsxmonth.total from reservationsxmonth limit 0, 10000

这看起来不像是权利问题,因为该语句在 phpMyAdmin 中执行良好。

问题是,我可以使用 PDO 来访问视图吗?怎么做? PDO 连接是否需要某些选项?

     $pdo='mysql:host=127.0.0.1;dbname=kafexxxx_diner;port=3306;charset=utf8';
     $this->connection = new PDO($pdo, $this->userid, $this->password, $options);
     $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

     

【问题讨论】:

  • PDO 不需要任何特殊的东西来访问视图。

标签: php mysql pdo view


【解决方案1】:

这没有问题,因此您应该检查拼写错误或检查您的数据库,如果视图已创建

<?php
$stmt = $pdo->query("SELECT * FROM view_name");
while ($row = $stmt->fetch()) {
    echo $row['name']."<br />\n";
}

example

【讨论】:

  • 没有错别字,因为该语句在 adminer 或 phpMyAdmin 中运行良好。难道这是一个pdo驱动程序问题? MySQL和MariaDB之间有些不兼容?你的样品和我的几乎一样。 $sth=$dbh->query('SELECT * FROM reservationsxmonth LIMIT 50'); // 获取所有行到数组中,默认使用 PDO::FETCH_BOTH $rows = $sth->fetchAll(); // 按索引和名称遍历数组 foreach($rows as $row) { printf("$row[0] $row[1] $row[2]\n"); }
  • 不,您不需要任何选项,如示例中所示,当我的 sql 说它没有具有该名称的视图时,这总是正确的。通常您连接到不同的服务器。你可以运行SHOW FULL TABLES IN database_name WHERE TABLE_TYPE LIKE 'VIEW';来查看你在该服务器上有哪些誓言。
  • 不,找到了,服务器配置为区分大小写。噗。谢谢你的回答。
猜你喜欢
  • 2012-02-05
  • 2011-11-10
  • 2015-04-26
  • 2015-09-01
  • 2022-01-10
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多