从mysql数据库和php访问数组数据

时间:2013-02-18 16:49:03

标签: php mysql arrays

我有两个包含信息的mysql表:

一个表存储页面信息,如名称和位置,以及一个数组列,用于存储以数组格式存储的每页显示的小部件:1,2,3,4

另一个表是实际的小部件表,其中包含小部件信息和id作为其标识符ex:1,2,3,4

我需要:

  1. 从页面表中获取数组数据
  2. 遍历该数组并显示小部件表中的内容。
  3. 我一直在处理foreach声明:

    每个页面的网址都遵循以下格式:index.php?page = thispage& route = thisroute因此$ _GET ['page']

    $page = $_GET['page'];
    $order = "SELECT * FROM pages where name='$page'";
      $result = mysql_query($order);
        while($row = mysql_fetch_array($result)){
                $widget = array();
                $widget .= $row[3];
            }
    
            print_r($widget);
    
            foreach($widget as $w) {
                        $order = "SELECT * FROM menu where id='$w'";
                        $result = mysql_query($order);
                        while($row = mysql_fetch_array($result)){
                        print $row[1];
                        }
                }
    

    更新:找出适合我的解决方案。

    保持逗号分隔值的原因是因为我每页可以有一个小部件或每页有15个小部件,每个小部件都可以动态添加。从管理方面来说,我希望能够选择每个页面可以拥有的小部件。

    以逗号分隔值保存数据时,所有数据都在“1,2,3,4”列中。

    我只是坚持将数据爆炸成数组并循环遍历数组的每个值:

    $page = $_GET['page'];
    $order = "SELECT * FROM pages where name='$page'"; //select widgets to show on page
      $result = mysql_query($order);
        while($row = mysql_fetch_array($result)){
                $widget = $row[3]; 
                $string = preg_replace('/\,$/', '', $widget); //remove trailing comma
                $array = explode(', ', $string);
    
                foreach($array as $value) //loop over values
                    {
                        $order = "SELECT * FROM widget where id='$value'";
                        $result = mysql_query($order);
                        while($row = mysql_fetch_array($result)){
                            print $row[1]; //print data: this will be formated to the specific divs set up.
                    }
    
                }
        }
    

1 个答案:

答案 0 :(得分:0)

  1. 从页面表中获取数组数据: SELECT array_column_name FROM table_store_page WHERE id=your_id(使用此sql获取数组)

  2. 使用mysql_query

  3. 在php中执行SQL语句

    无论如何,数据库中的存储数组/逗号分隔值永远不会推荐。您可以尝试规范化数据库。