私は、データベース内のファイルを中程度の blob フィールドに保存する ac# プロジェクトに取り組んでいます。データは正常に保存されており、MySQL Workbench 内で表示すると、ファイル内の各行がデータベース内の独自の行に表示されます。 、つまり同じ形式です。
ただし、PHP から情報を取得すると、新しい行が削除されたように見え、すべてが同じ行に表示されます。
以下は、ファイルをデータベースに保存するために使用しているコードです。
using (ConnectDb db = new ConnectDb(appSettings))
{
FileStream fileStream = new FileStream(logFile, FileMode.Open, FileAccess.Read);
long fileLength = fileStream.Length;
byte[] myData = new byte[fileLength];
fileStream.Read(myData, 0, System.Convert.ToInt32(fileLength));
fileStream.Close();
string fileSize = Common.convertBytesToMb(fileLength);
string query = "INSERT INTO logfile_history (LogFile, FileSize) VALUES (@file, @size)";
using (MySqlCommand cmd = new MySqlCommand(query, db.conn))
{
cmd.Parameters.AddWithValue("@file", myData);
cmd.Parameters.AddWithValue("@size", fileSize);
cmd.ExecuteNonQuery();
}
}
PHP からファイルを取得すると、新しい行が削除されます。以下は、PHP からデータベースの Medium Blob からデータを取得するために使用しているコードです。
$query = "SELECT * FROM logfile_history WHERE id='$id'";
$result = mysql_query($query);
if ($result)
{
echo "<table class=\"overview\">";
echo "<tr>";
echo "<th>Date</th>";
echo "<th>Class/Method</th>";
echo "<th>Message</th>";
echo "</tr>";
while ($myrow = mysql_fetch_array($result))
{
$logContent = $myrow['LogFile'];
$splitContent = explode("\t", $logContent);
$i = 0;
$colCount = 0;
while ($i < count($splitContent))
{
if ($colCount == 0)
{
echo "<tr>";
}
echo "<td>" . $splitContent[$i] . "</td>";
if ($colCount == 2)
{
echo "</tr>";
$colCount = 0;
}
$i++;
$colCount++;
}
}
echo "</table>";
ログファイルではタブで区切られているので、行を分割しているので、表に入れるためにタブで分割していますが、これはすべてが同じ行にあることに気付く前でした。
データベースからデータを取得するときに改行を保持するにはどうすればよいですか。
ご協力いただきありがとうございます。