0

mysql.com がヘルプ ページで使用しているものと同様の ASCII レイアウトを使用して、MySQL レコードセットをブログ投稿にすばやく表示したいと考えています。ワードプレス v2.7 を使用しています。何か案は?また、構文の強調表示に wp-syntax を使用していることも付け加えておく必要があります。つまり、実際には、関心のある ASCII を生成しているだけです。

4

3 に答える 3

1

次のようなことを意味する場合

+----+------+
| | ID | 名前 |
+----+------+
| | 1 | ボブ |
| | 2 | メアリー |
| | 3 | ジェーン |
| | 4 | リサ | リサ |
+----+------+

コマンドラインでインタラクティブモードでクエリを実行すると結果がフォーマットされるため、MySQL コマンドラインからクエリを実行するだけで十分です。次に、それらをコピーしてブログ投稿に貼り付け<pre>、必要に応じて などで囲みます。

于 2009-03-04T00:02:47.923 に答える
0

あなたが話している ASCII は、MySQL コマンドライン クライアントがその結果をレイアウトする方法です。

mysql> select task_nextrun,task_name from pref_task;
+--------------+-----------------+
| task_nextrun | task_name       |
+--------------+-----------------+
|   1235999760 | datacache_clean |
|   1236002760 | process_stats   |
+--------------+-----------------+
2 rows in set (0.00 sec)

mysql>

コマンドを MySQL コマンド ライン クライアントに送信するだけです。

于 2009-03-04T00:03:58.480 に答える
0

コマンドライン クライアントを呼び出さずに実行したい場合は、PHP での方法を次に示します。これはかなり大雑把なコードであり、テストしていないことに注意してください。ほとんどの場合、プロセスを説明しようとしているだけです。また、すべてを左揃えにします。mysql クライアントは数字を右揃えにしてエミュレートすると思いますが、もう少し作業が必要ですが、難しいことはありません。

$resultsetmysqli_result のfetch_all()関数のようなものを使用して、という名前の連想のみの配列にレコードをフェッチしたと仮定します。

// determine maximum value lengths for each column
foreach ($resultset as $result)
{
    foreach ($result as $col => $val)
    {
        if (strlen($val) > $max_length[$col])
        {
            $max_length[$col] = strlen($val);
        }
    }
}

// construct border lines
foreach ($max_length as $col_length)
{
    $border_line .= '+'.str_repeat('-', $col_length+2);
}
$border_line .= "+";

// print header
print $border_line."<br />\n";
foreach ($max_length as $col_name => $col_length)
{
    print '| '.str_pad($col_name, $col_length, ' ').' |';
}
print "<br />\n";
print $border_line."<br />\n";

// print data
foreach ($resultset as $result)
{
    foreach ($result as $col => $val)
    {
        print '| '.str_pad($val, $max_length[$col], ' ').' |';
    }
    print "<br />\n";
}
print $border_line."<br />\n";
于 2009-03-04T00:14:14.463 に答える