php - 记录集中的循环列

标签 php mysql pdo

请理解这不是我的设计方式,也不是做这样事情的正确方法。

但是,由于我被赋予了这项任务,并且完全无法绕过数据的结构方式,因此我的任务是处理我被赋予的任务。

我有一个结构如下的表:

ID
UniqueName
DisplayName
Tag1
Tag...
Tag27

是的,我有 27 列,Tag1 - Tag27

注意:由于数据来自 15 年未更新的旧软件,因此无法更改,也没有任何更新的机会。 (因此我的困境)

我正在使用 PDOfetchAll(PDO::FETCH_ASSOC)

获取我的结果集

我怎样才能遍历这些 Tag* 列,并且只遍历 Tag* 列,而不必输入 rs[$i]['Tag #'] 对于每个单独的一个,还注意到在某些情况下我可以有 14 个 Tag 列,而不是我在这个例子中声明的 27 个...

列代码:

// prod_opts_value_fields_prefix = "Tag"
foreach ($rs[$i] as $key => $val) {
    if ( strpos ( strtolower ( $key ), strtolower ( $prod_opts_value_fields_prefix ) ) !== false ) {
        $vals .= $val . '|';
        echo $val . '<br />';
    }
}

没有任何东西得到echo

最佳答案

您可以在 rs[$i] 上运行 foreach 并检查 key 是否包含带有 strpos 的“标签”并从那里。

或者,您可以只使用在 1 到 27(或任何最大标记值)上运行的 for 循环,并使用 if 条件检查 rs[$ i]['Tag$N'](其中 N 是 for 循环计数变量)被设置,如果没有从循环中中断,因为这意味着您已经遍历了所有可能的标签。

这里的第二个解决方案确实假设标签总是按顺序和升序编号。

关于php - 记录集中的循环列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014302/

相关文章:

PHP 查询调用问题

php - PHP7 的 PDO ext 是否将整个结果集读入内存?

php - 你能告诉我如何用正则表达式替换吗

php - 使用 Apache 的 Flowplayer 安全流式传输

php - 使用 Pdo 的 Codeigniter 发出对成员函数 rowCount() 的调用

php - PDO在mysql中的性能

mysql - PDO 事务中多个 MYSQL 更新失败

php - 简单的 PHP 电子邮件表单不起作用

c# - Linq 查询无法合并两个表记录

html - BC30002 : Type 'MySqlConnection' is not defined - once code is on Web Server