gpt4 book ai didi

php - MySql 变量和 php

转载 作者:行者123 更新时间:2023-11-29 01:25:31 25 4
gpt4 key购买 nike

我在 php.ini 中遇到此错误。在 php 中格式化此字符串以传递给 mysql_query() 的正确方法是什么?

SELECT count(*) FROM agents INTO @AgentCount;

SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount,
COUNT( * ) / ( @AgentCount) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50;

在 php 中,这是我设置 $query 的方法

      $query = "
SELECT count(*) FROM agents INTO @AgentCount;

SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount,
COUNT( * ) / ( @AgentCount) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50";

如果我通过命令行 session 将其直接放入 MySql,那么该查询将正常工作。我是否需要对 mysql_query() 发出两个单独的 php 调用并存储第一个结果?

我收到以下错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 3 行的“SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount”附近使用的正确语法

不使用子选择而是选择 MySql 变量的原因是为了避免每次百分比计算时都发生 count()。尽管引擎可能正在为此进行优化。到目前为止,我还无法证实这一点。我还听说子选择几乎总是非最佳的。

解释告诉我这一点:

id  select_type table   type    possible_keys   key key_len ref rows    Extra1   PRIMARY agents  index   NULL    user_agent_parsed   28  NULL    82900   Using temporary; Using filesort2   SUBQUERY    NULL    NULL    NULL    NULL    NULL    NULL    NULL    Select tables optimized away

最佳答案

在 PHP 中一次只能进行一个查询。

 $query1 = "SELECT count(*) FROM agents INTO @AgentCount"
$query2="
SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount,
COUNT( * ) / ( @AgentCount) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50";

更新

我有一个包含我所有查询的 DAL。我的 DAL 中的典型函数如下所示:

// These functions are reusable 
public function getAllRows($table)
{
$sql =" SELECT * FROM $table";
$this->query($sql);
return $this->query_result;
}

然后在我的 BLL(业务层)中我有以下内容:

  public function getUserAgents()
{
$result = parent::getAllRows();
$row = mysql_fetch_array($result);
return $row[0]; // Retrieves the first row

// Then you take this value and to a second request. Then return the answer / rows.
}

关于php - MySql 变量和 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1580700/

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