0

我正在制作一个价格表来升级会员资格。

在 mySQL 中,我有一个表,限制了每个成员可以允许的内容查看图片

我从表中获取信息并尝试遍历它并从另一个数组中附加一些文本。我已经尝试在网上彻底寻找答案,但我什至可能没有寻找合适的术语。出于这个问题的目的,我使用了 2 个字段,但实际上我将迭代并附加许多列。

这是我的代码:

$sql = "SELECT maxProducts,maxImages FROM memproducts_membership_settings WHERE useThis='1'";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs,MYSQL_ASSOC))
{
    foreach($row as $field)
    {
        $append = array('Product Slots','Images per product');
        print $field.' '.$append.'<br>';
    }
}

我得到的是:

5 阵列

2 阵列

而不是我需要的是:

5 个产品插槽

每个产品 2 张图片

我确定有办法做到这一点,但我就是想不通,请任何人给我一些指示?许多问候:)

4

4 回答 4

0

要将值附加到数组的末尾,请使用 array_push()

http://php.net/manual/en/function.array-push.php

于 2013-10-21T22:17:52.000 回答
0

这是很基本的东西...

while($row = mysql_fetch_array($rs,MYSQL_ASSOC))
{
    echo $row['maxProducts'] . ' Product Slots<br>';
    echo $row['maxImages'] . ' Images per product<br>';
}

或者,如果您需要按照问题建议的从数据库返回的任何顺序对动态字段执行此操作,也许您可​​以考虑提供数据库列名到适当标签内容的映射,如下所示:

$labels = array(
    'maxProducts' => 'Product Slots',
    'maxImages' => 'Images per product',
    ...
);

...

while($row = mysql_fetch_array($rs,MYSQL_ASSOC)) {
    foreach ($row as $key => $value) {
        echo $value . ' ' . $labels[$key] . '<br>';
    }
}

请注意,如果您只是在学习 PHP,那么您真的不应该学习mysql_*函数。它们已被弃用,需要消亡。请学习使用PDOmysqli

于 2013-10-21T22:18:40.867 回答
0

关于您的代码和您的方法有很多我根本不喜欢的地方,但是对于您当前的问题,最直接的解决方案是从循环中迭代字符串数组foreach,使用each()

$strings = array('Product Slots','Images per product');
while($row = mysql_fetch_array($rs,MYSQL_ASSOC))
{
    reset($strings);
    foreach($row as $field)
    {
        $append = each($strings);
        print $field.' '.$append[1].'<br>';
    }
}

至少应该让自己意识到:

  • ext/mysql 的弃用(使用 mysqli 或 PDO);和

  • XSS 攻击的风险(在将值返回到浏览器之前从数据库中转义值中的任何 HTML)。

于 2013-10-21T22:18:44.727 回答
0

它正在做它应该做的事情......你已经创建了一个数组并要求它打印它的名字。由于 print 无法自动迭代数组,它只会告诉您变量类型是什么。

于 2013-10-21T22:21:49.013 回答