带有 PDO 连接的 MySQL SET

Posted

技术标签:

【中文标题】带有 PDO 连接的 MySQL SET【英文标题】:MySQL SET with PDO Connection 【发布时间】:2013-04-17 11:08:08 【问题描述】:

我正在尝试执行一个很长的 SQL 语句,该语句使用多个用户选项选择“前 N”行。我不想在这里发布整个声明,因为它很长,但我正在使用这篇文章中描述的 mysql 变量:MySql Query: Select top 3 rows from table for each category

该语句在 MySQL 命令行上运行时运行良好,但我遇到的问题是整个查询必须通过 PDO 连接运行,我想知道是否有人可以确认我无法设置值'on-the-飞”,如下图所示。这是 PDO 限制吗?我只是浪费了几个小时吗?非常感谢您的帮助...

SELECT outerseasons.* FROM (SELECT seasons.CountryName, seasons.idCountry, '' as     idCountryGroup, '' as CGName, seasons.DIValue_WorkingEntered, 
      seasons.SNName, seasons.idSeason, seasons.idParameter, seasons.PMName,
      CASE 
        WHEN @idSeason != seasons.idSeason OR @idParameter != seasons.idParameter
        THEN @rownum := 1
        ELSE @rownum := @rownum + 1
      END AS rank,
      @idSeason := seasons.idSeason as var_season,
      @idParameter := seasons.idParameter as var_parameter
      FROM ( SELECT ...

【问题讨论】:

你使用 PDO 准备好的语句吗? 不,它是用原生 MySQL 编写的。不是我的错,也没有办法解决它...... :( 【参考方案1】:

PDO 与 SQL 语法有关。它可以执行您编写的任何 SQL 查询。 唯一的麻烦可能是由查询集引起的。可以通过将这些集合拆分为单独的查询并逐个运行它们来轻松解决。

其他任何问题都可能仅由 SQL 语法错误引起。 只需验证您的 SQL 语法和watch PDO errors

【讨论】:

感谢您的反馈,非常感谢。您能否详细说明“通过将这些集合拆分为单独的查询并逐个运行它们可以轻松解决”?您的意思是将每个 SELECT 作为单独的查询运行吗?以及如何再次组合它们(如果有意义的话)。原谅我的无知。 我的意思是将每个查询取消为单独的查询。如果您的 SQL 中没有 ; 符号,请不要打扰 - 事实并非如此。

以上是关于带有 PDO 连接的 MySQL SET的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 连接 MySQL

带有 PDOStatement 的 PDO 重新连接“mysql 服务器消失”错误

使用带有 PDO 的数组更新多个 MySQL 表列

mysql连接选mysqli还是PDO

MySQLi 和 PDO 连接 MySQL 实例

我可以安全地使用带有 utf8 列的 utf8mb4 连接吗?