Php 无法从mySQL存储过程返回结果

Php 无法从mySQL存储过程返回结果,php,mysql,pdo,Php,Mysql,Pdo,我正试图使用PDO从存储过程中提取数据,但我很难确定这一点。过去几天我到处寻找,似乎找不到解决问题的直接方法 以下是我创建过程的方式: DELIMITER $$ CREATE PROCEDURE sp_searchArticles( IN tagList VARCHAR(255), IN lastArticle INT(10), OUT data INT(10)) BEGIN CREATE TEMPORARY TABLE at_results ( id INTEGER(1

我正试图使用PDO从存储过程中提取数据,但我很难确定这一点。过去几天我到处寻找,似乎找不到解决问题的直接方法

以下是我创建过程的方式:

DELIMITER $$
CREATE PROCEDURE sp_searchArticles(
   IN tagList VARCHAR(255), 
   IN lastArticle INT(10), 
   OUT  data INT(10))
BEGIN
CREATE TEMPORARY TABLE at_results (
id INTEGER(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
article_id INTEGER(10) NOT NULL,
datetime DATETIME NOT NULL,
common_tags INTEGER NOT NULL)
SELECT at.article_id, art.datetime, Count(at.article_id) AS common_tags
FROM article_tags AS at 
INNER JOIN articles AS art ON at.article_id = art.article_id
WHERE at.tag_id IN (tagList)
GROUP BY at.article_id
ORDER BY common_tags DESC, art.datetime DESC;

CREATE TEMPORARY TABLE at_article
SELECT id
FROM at_results
WHERE article_id = lastArticle;

SELECT article_id
INTO data
FROM at_results, at_article
WHERE at_results.id > at_article.id;

END $$
DELIMITER ;
然后我使用PDO调用SP:

$sql = "CALL sp_searchArticles(:tag_list, :last_article, @data)";
$tag_sth = $this->db->prepare($sql);
$tag_sth->bindParam(':tag_list', $tag_list);
$tag_sth->bindParam(':last_article', $last_article);
$tag_sth->execute();
$data = $this->db->query("select @data")->fetch(PDO::FETCH_ASSOC);
但它返回“#1436-线程堆栈溢出:”

我曾尝试在不使用@data out变量的情况下调用存储过程,但我得到了HY000错误。我本来不希望这个调用是一个存储过程,但PDO似乎不喜欢我在一次执行中有多个语句的样子。此外,我似乎无法通过phpmyadmin使用静态参数正确调用该过程。然而,sql语句在过程之外工作得非常好


我对PDO和mySQL不是最精通的,但我读过很多关于phpmyadmin、PDO和PHP中与存储过程相关的bug的书。非常感谢您的帮助。

您使用的内存可能比MySQL配置允许您使用的内存还要多

见:


如果您有权访问my.cnf文件,请尝试更改该文件。

成功了。。。找了这么长时间,我觉得有点傻,你们都花了2分钟。我甚至到处搜索那个错误代码,没有发现任何引用my.cnf的东西。你知道增加这个数字是否有负面影响吗?谢谢