【发布时间】:2014-07-07 03:00:48
【问题描述】:
我会注意到这是一个非常特殊情况,因此要从这个问题开始。在正常情况下,这样的功能会很简单:
- 我有一个名为
$post_id的数组,其中包含 5 个值 (每个数字) - 为了打印数组中的每个值,我使用以下循环:
.
for ($i = 0; $i < $num; $i++)
{
echo $post_id[$i] . ' ';
}
...打印以下内容:49, 48, 47, 46, 43
3. 在我的数据库中,我有一个如下所示的表:
post_categories
_____________________
post_id | category
__________|__________
43 | puppies
43 | trucks
46 | sports
46 | rio
46 | dolphins
49 | fifa
4. 因此,使用数组 $post_id 中的数据,我想循环 数据库查询 以检索 category 列中的每个值post_categories 表,并根据“post id”将它们放入唯一命名的数组中,以便类似...
echo $post_id_49[0] . ' ', $post_id_46[1];
...假设您使用上表,将打印“fifa rio”。
此类查询的示例:
//Note - This is "false" markup, you'll find out why below
for ($i = 0; $i < $num; $i++)
{
$query = "SELECT category FROM post_categories WHERE post_id = $post_id[$i]";
fakeMarkup_executeQuery($query);
}
为什么这是一个“特殊”情况?出于同样的原因,上述查询为“假”。
为了详细说明,我正在使用一个不允许“正常”查询的软件包,也就是说,它使用自己的查询标记,以便相同的代码可以处理多种数据库类型,而无需处理给用户指定他们的数据库类型,这让程序根据数据库的类型解释查询。但是,它确实允许将查询存储在与所有查询相同的“形式”中,例如“$result = *query here*”(唯一的区别是它自己执行)。
因此,诸如mysql_fetch_array(或任何类似的 MySQL/MySQLi 函数)之类的函数不能,也不会工作。该软件也不提供任何形式的内置替代方案,有效地让用户发明自己的方法来实现相同的结果。我知道,很蹩脚。
所以,这就是我卡住的地方。如您所料,您在 Internet 上找到的所有信息都假定您可以使用这些 MySQL 和 MySQLi 函数。 我需要的是另一种方法,可以从每个循环的循环查询的结果中获取一个数组。我根本无法得出任何实际有效的结论。
tl;dr 我需要能够 (1) 循环查询,(2) 将每个循环的输出作为它是具有自己名称的数组,并且 (3),这样做无需使用像 mysql_fetch_array 这样的函数。 查询本身并不重要,所以不要专注于此。我知道如何处理查询。
我知道这非常令人困惑、冗长且复杂。几天来,我一直在这个烂摊子中跋涉——接近“作弊”的地步,并将我试图在这里获取的数据作为原始代码存储在数据库中。不好的做法,但肯定让我痛苦的头脑更容易了。
我向任何试图解开这个烂摊子的勇敢灵魂致敬,祝你好运。如果这真的不可能,请告诉我,以便我可以向软件开发人员发送一封愤怒的信。我能猜到的是,他们从来没有想过会出现像我这样的案子。也许这比我想象的要简单得多,但无论如何,我个人无法得出合乎逻辑的结论。
附加说明:由于一些未解释的错误消除了它,我不得不重写此 两次。为了我自己的理智,我将在发布后休息一下,所以我可能无法立即回答任何后续问题。请参阅 tl;dr 了解我的需求的最简单说明。
【问题讨论】:
-
“根据帖子 ID 将它们放入唯一命名的数组中” ~ 不要这样做。只需使用数组索引而不是尝试创建特殊命名的变量,即
$post_vals = [49 => "fifa", 46 => "rio", etc] -
“我向任何试图解开这个烂摊子的勇敢灵魂致敬,祝你好运。”轻描淡写。您的问题在概念上很简单,但却是一堵调试文本的墙。抱歉,但请将其归结为非常简单的内容:“这就是我所拥有的,这就是我想要的,这是我正在使用的代码。怎么了?”
-
@SuperCat tl;dr 在哪里?我只看到最后对它的引用。一般来说,你的漫无边际没有帮助。