在php中从mysql获取特定列数据的最简单方法(特例)

时间:2015-01-19 06:50:37

标签: php mysql xml

我想要一个小的php文件,它将生成的站点上的mysql结果转换为给定的XML模板。所以我做了(在我知道如何构建站点数据库之前),我写的一个非常小的模拟数据库,有一个表并测试了我的脚本,它似乎工作,这里是一个来自表和脚本的小部件

+----+---------------+----------------------------+--------+
| id | house         | time_cr                    | price  |
+----+---------------+----------------------------+--------+
|  1 | Villa_Niki    | 2015-01-13 13:23:56.543294 | 25000  |
|  2 | toni          | 2015-01-13 13:24:31.133273 | 34000  |
|  3 | kolio         | 2015-01-13 13:26:06.720740 | 10000  |
|  4 | aldomirovvtxi | 2015-01-13 13:26:24.226741 | 100000 |
+----+---------------+----------------------------+--------+

然后脚本将数据提取到XML中,非常简单

$kol=$xml->addChild('realty');
while($row=mysql_fetch_array($result))
{


 $kol->addChild('id',$row["id"]);
 $kol->addChild('creation-date',$row["time_cr"]);
 $kol->addChild('last-update-date',$row["time_cr"]);
 $kol->addChild('url','leva');
 $kol->addChild('bldtype',$row["house"]);
  ........

所以只需使用fetch_array然后使用列索引并循环就可以了

昨天我在网站上打开了数据库,事实证明他们把所有信息都没有放在一个单独的列中,例如City,State等单独的列,而是将所有信息放在一个列中。单列,如下:

http://oi58.tinypic.com/35ndgjk.jpg

所以有一种简单的方法可以使它在这种情况下工作,比如给定的特定listingdb_id,将Street提取到街道XML标签,区域到区域XML标签等?欢迎提出所有建议,谢谢!

http://oi61.tinypic.com/ogcooz.jpg

1 个答案:

答案 0 :(得分:1)

这是一个设计糟糕的数据库。如果我是你,我会在将字段/数据提取到XML文件后重新设计数据库。

我现在没有在这个Linux发行版上运行PHP / MySQL / PHPMyAdmin,所以我无法真正编写代码来帮助你,而且我需要睡觉。也许我明天会。我有一个想法,我将如何解决问题,但我很难将其表达为从这些类型设计不佳的数据库中提取数据的算法。

您可能需要查询ID字段中的最低值和最高值,并设置变量$ start,$ id(当前指针),$ finish。然后有这样的事情:

  for ($id = $start; $id <= $finish; $id++) {
      while ($row->id = $id) {
          $array[$id][$field] = $row->field;
          $array[$id][$field][$value] = $row->value;
          $row->nextRow();
      }
  }

这只是伪代码......我要睡觉了。


我要指出你正在使用旧的MySQL PHP API。使用MySQLi ......或者更好,使用PDO。

以下是PDO的文档: PDO Documentation - PHP

和for MySQLI: PDO Documentation - PHP