我正在制作一个定价表来升级会员资格。
在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 张图片
我确定有一种方法可以做到这一点,但我就是想不通,请有人给我一些指示?许多问候:)
这是
非常基本的东西...
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_*
函数。 它们已被弃用,需要死亡。 请学习使用PDO
或mysqli
。
要将值附加到数组的末尾,请使用 array_push()
http://php.net/manual/en/function.array-push.php
你的代码和方法有很多我根本不喜欢的地方,但解决你当前问题的最直接解决方案是从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)。
它正在做它应该做的事情...您已经创建了一个数组并要求它打印其名称。由于打印不能自动迭代数组,它只会告诉您变量类型是什么。