Php mySQL函数检查列值并执行新操作
可以在mySQL中编写一个函数来检查SELECT查询的值吗?如果可以的话!=0,是否继续运行该函数并添加到结果数组 我有一些条目被标记为Php mySQL函数检查列值并执行新操作,php,mysql,Php,Mysql,可以在mySQL中编写一个函数来检查SELECT查询的值吗?如果可以的话!=0,是否继续运行该函数并添加到结果数组 我有一些条目被标记为相关的\u id=0其余条目都附有实际的正数 我试图创建一个查询,该查询将持续循环通过一个sql函数,检查并查看检索到的related\u id结果是否为0。如果没有,则它将再次运行,将新选中的行添加到结果数组中,并继续,直到找到0为止 按照DB的设置方式,0将始终出现,并且它将通过id进行搜索,因此应该只有一个结果 我使用的是一个稍加修改的标签系统 keywo
相关的\u id
=0
其余条目都附有实际的正数
我试图创建一个查询,该查询将持续循环通过一个sql函数,检查并查看检索到的related\u id
结果是否为0。如果没有,则它将再次运行,将新选中的行添加到结果数组中,并继续,直到找到0为止
按照DB的设置方式,0将始终出现,并且它将通过id进行搜索,因此应该只有一个结果
我使用的是一个稍加修改的标签系统
keywords_id | keyword | related_id
------------------------------------
1 | sports | 0
2 | baseball | 1
3 | football | 1
4 | pitchers | 2
如果我传入related\u id
=2
,我希望返回一个数组,该数组生成:
array
[0]
keyword => 'sports'
keywords_id => '1'
related_id => '0'
[1]
keyword => 'baseball'
keywords_id => '2'
related_id => '1'
[2]
keyword => 'pitcher'
keywords_id => '4'
related_id => '2'
我尝试使用IF和THEN,但我只是没有看到足够的示例,而且很难在网上找到可靠的教程。谢谢
SELECT k.*
FROM keywords k
WHERE keywords_id = 2
上面的查询基本上会启动它。关键字\u id
是传递的相关\u id
。因此,上面将返回关键字|关键字:棒球|相关| id:1
因为相关的_id 1不是0,所以我需要再次运行它
我意识到这可以通过一些额外的查询在PHP中完成……这是我应该做的吗?在阅读了函数之后,我假设它可以在mySQL中完成。我就是想不出来。我对上述样本的理解-需要检查所有记录,直到找到匹配项为止(上述相关的样本id=2) 如果是这样,您可以尝试使用mysql游标
为了循环结果集,MySQL不支持从函数返回数组。建议创建一个表(或者可能是一个临时表)来保存结果,然后编写一个存储过程来填充它 不确定你到底想实现什么,但可能是沿着这条路线
CREATE TABLE results (keywords_id INT, keyword VARCHAR(2000), related_id INT);
CREATE PROCEDURE populateResults(IN keyword_id_in INT)
BEGIN
DECLARE num_results INT;
DECLARE max_results INT;
DECLARE next_keyword_id INT;
SET next_keyword_id = keyword_id_in;
SET max_results = 5;
SET num_results = 0;
DELETE FROM results;
the_loop: LOOP
INSERT INTO results
SELECT keywords_id, keyword, related_id
FROM keywords
WHERE keywords_id = next_keyword_id;
SELECT related_id
FROM keywords
WHERE keywords_id = next_keyword_id
INTO next_keyword_id;
IF (next_keyword_id = 0) || (num_results >= max_results) THEN
LEAVE the_loop;
END IF;
SET num_results = num_results + 1;
END LOOP the_loop;
END
请参见您可以发布您尝试过的查询吗?可能有助于理解你想做什么我尽可能多地补充了。我承认这可以通过多个查询和php轻松实现。所以答案也可以将这个问题考虑在内。您正在搜索存储过程吗?^我不太确定。我查了一下存储过程,它似乎使用了mySQLs函数命令之外的东西。我之所以问这个问题,主要是因为我不了解mysql内部的函数,因此没有使用它的经验。我甚至不确定这是否可能。对不起,我的主要问题是我不明白你到底在寻找什么。(我至少没有关于数据库结构的信息)我不能举个例子。但听起来它既可以通过常规查询也可以通过存储过程来完成。在这方面我建议谷歌,从“hello world”这样的例子开始。非常酷的东西。我还没能测试它。但是仅仅是设计本身是非常有信息量的。谢谢你的链接。有趣的东西