2016-04-19 15 views
0

MySQLテーブルの行として4つのフィールドを取得するにはどうすればよいですか?MySQLテーブルの行として4つのフィールドを取得するにはどうすればよいですか?

表構造:

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 

など。

私はサンプルコードを有していません。私は300,000以上の行を持っています。あなたが望むものを達成するために

+0

必要なフィールドをクエリに入力するだけです。 '名前、姓、初期、otherfield、anotherone、one_more FROM yourtable'を選択し、PHPを使ってそれをどのようにフォーマットするかを指定します。 – Mike

+0

データは実際にはそんなに一貫して4行に散らばっていますか? 4つのフィールドであれば、http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_concatを使用できます。 – chris85

+0

マイク、私はテーブル構造から見ることができるように、私は1つのフィールドしか持っていません。 Chris85、はいそのコンスタント、4行ごとに新しいサイクルが始まります。 –

答えて

0

のためにこれは私がどうなるのかです:

$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; 
+0

ありがとう –

1

一つのアプローチは、グループとして連続4つのid値の各グループを考慮して、レコードの各セット上でグループの連結を行うには、次のようになります。

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

私はこれが要件の解釈があまりにもリテラルであると思われます。 – Strawberry

+1

誰もこれまで私をそのように愛したことはありません。私は言葉のために失われています。 :-) – Strawberry

+0

@Strawberryあなたはそこに自分と話していますか? – Mike

1

あなたは、使用残りを試すことができます分裂%の例については、残りの数4を取得

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