Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在MySQL表中获得四个字段作为一行?_Php_Mysql_Row - Fatal编程技术网

Php 如何在MySQL表中获得四个字段作为一行?

Php 如何在MySQL表中获得四个字段作为一行?,php,mysql,row,Php,Mysql,Row,如何在MySQL表中获得四个字段作为一行 表结构: id name ------------ 1 John 2 Doe 3 M 4 King 5 Mark 6 Someone 7 Thing 8 Super html输出应为: John - Doe - M - King Mark - Someone - Thing - Super 等等 我没有代码示例,因为我不知道从哪里开始。我有超过300000行。< P>一个实现你想

如何在MySQL表中获得四个字段作为一行

表结构:

id     name
------------
1     John
2     Doe
3     M
4     King
5     Mark
6     Someone
7     Thing
8     Super
html输出应为:

John - Doe - M - King
Mark - Someone - Thing - Super
等等


我没有代码示例,因为我不知道从哪里开始。我有超过300000行。

< P>一个实现你想要的方法是把每组4个连续的<代码> ID <代码>值作为一个组,然后在每组记录上做一个组连接:

SELECT GROUP_CONCAT(`name` SEPARATOR ' - ')
FROM yourTable
GROUP BY (id - 1) DIV 4

一种实现你想要的方法是将每组4个连续的<代码> ID <代码>值作为一个组,然后对每组记录进行组连接:

SELECT GROUP_CONCAT(`name` SEPARATOR ' - ')
FROM yourTable
GROUP BY (id - 1) DIV 4

您可以尝试使用除法的余数
%
来获取余数4。比如说

  for($i=0;$i<count($row);$i++) {
      echo $row['name'] ;
      if($i%4==0) {
         echo '<br/>';
      } else {
         echo ' - ';
      }
   }

对于($i=0;$i您可以尝试使用除法的余数
%
来获取余数4。例如

  for($i=0;$i<count($row);$i++) {
      echo $row['name'] ;
      if($i%4==0) {
         echo '<br/>';
      } else {
         echo ' - ';
      }
   }

对于($i=0;$i我会这样做:

$mysqli = database::connect(); // Get a connection
if ($result = $mysqli->query("SELECT name FROM tablename ORDER BY id ASC")) {
    $i = 0;
    $data = "";
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $data .= $row['name'];
        $i++;
        if ($i < 4) {
            $data .= " - ";
         } else {
            $data .= "<br />";
            $i = 0;
         }
    }
    $result->close();
}
echo $data;
$mysqli=database::connect();//获取连接
if($result=$mysqli->query(“按id ASC从表名顺序中选择名称”)){
$i=0;
$data=“”;
而($row=$result->fetch_数组(MYSQLI_ASSOC)){
$data.=$row['name'];
$i++;
如果($i<4){
$data.=“-”;
}否则{
$data.=“
”; $i=0; } } $result->close(); } 回波数据;
这就是我要做的:

$mysqli = database::connect(); // Get a connection
if ($result = $mysqli->query("SELECT name FROM tablename ORDER BY id ASC")) {
    $i = 0;
    $data = "";
    while($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $data .= $row['name'];
        $i++;
        if ($i < 4) {
            $data .= " - ";
         } else {
            $data .= "<br />";
            $i = 0;
         }
    }
    $result->close();
}
echo $data;
$mysqli=database::connect();//获取连接
if($result=$mysqli->query(“按id ASC从表名顺序中选择名称”)){
$i=0;
$data=“”;
而($row=$result->fetch_数组(MYSQLI_ASSOC)){
$data.=$row['name'];
$i++;
如果($i<4){
$data.=“-”;
}否则{
$data.=“
”; $i=0; } } $result->close(); } 回波数据;

您只需在查询中输入所需的字段。
从您的表中选择name、lastname、initial、otherfield、anotherone、one或one,然后使用PHP将其格式化。数据是否真的像那样分散在4行中?如果是4个字段,您可以使用。Mike,我只有一个字段,您可以从表结构中看到Casy.Cys85,是它的一致性,每4行一个新的循环开始后。@ GunARVI我没有注意到你的数据是如何构造的。抱歉,误解。我也会强烈地考虑把它重组成更合乎逻辑的东西。你怎么会这么疯狂。你只要把你需要的字段放在你的查询中。<代码>选择名字,姓氏,初始化。al,otherfield,anotherone,yourtable中的一个,另一个
并使用PHP来格式化它。数据真的像那样分散在4行上吗?如果是4个字段,你可以使用。Mike,我只有一个字段,你可以从表结构中看到。Chris85,是的,它的一致性,在每4行新周期开始后。@Gunarves我没有你的数据是如何构造的。对不起,误解。我也会强烈考虑把它重组成更合乎逻辑的东西。你怎么会这么疯狂。我怀疑这是对文字的解释。以前从来没有人这样爱我。我迷失了。@草莓你在那里自言自语吗?@Mike我在上面加了一条评论,我说我喜欢吃草莓,但我不喜欢他们留下不好的评论。我把它删除了。@TimBiegeleisen哈哈。我认为这是一种类似的说法。我怀疑这是对这个要求的字面解释。从来没有人那么爱我一天前。我说不出话来。:-@草莓你在那里自言自语吗?@Mike我加了一句话,我说我喜欢吃草莓,但我不喜欢他们留下不好的评论。我把它删除了。@TimBiegeleisen哈哈。我还以为是这样的。