以前にコードを保守していた人から、いくつかの php スクリプトを継承しました。彼はプログラミングの経験がなく、できる限り最善を尽くして物事をまとめました。今日、ワードプレスのプラグイン ファイルを書き直さなければなりませんでしたが、何が問題なのかわかりません。
私が直面している問題は、テーブル ( ) の一部である else ステートメントで返されたファイル名を表示すると、<?php echo $result->display_name; ?>
予期しない結果が得られることです。データベースに Black & White.pdf というファイルがあるとします。display_name "Black & White.pdf" を返す代わりに、"Black" を返します。私は次のことを試しました:
<?php echo htmlentities($result->display_name); ?>
と
<?php echo htmlspecialchars($result->display_name); ?>
どちらも望ましい結果を生み出していません。何がうまくいかないのですか?これは私の側のPHPの無知ですか、それともWPが結果を返す方法に関するものですか(WPがphpの解析方法を変更できるとは思わないので、違いはないと思います)。参考までに、コードは次のとおりです。
function display_files($assn_id) {
global $wpdb;
$second_db = new wpdb("xxxxxx", "xxxxxx", "xxxxxx", "xxxxxx");
$results = $second_db->get_results("SELECT
community_files.id,
community_files.display_name,
community_files.filename,
community_files.sort,
community_files.file_type
FROM
community_files
WHERE
community_files.comm_id = '".$assn_id."'
ORDER BY
community_files.sort ASC");
if (!$results) {
echo "<li>The next meeting has not been posted yet.</li>";
} else {
echo "<table>";
// keeps getting the next row until there are no more to get
foreach ($results as $result) {
if (!$result->display_name) {
$display_name = str_replace("_", " ", $result->filename);
$display_name_fake = str_replace(" .", ".", $display_name);
$file_array[$x] = $result->id;
} else {
$display_name = $result->display_name;
$display_name_fake = str_replace(" .", ".", $display_name);
$file_array[$x] = $result->id;
} ?>
<tr>
<td>
<?php
if ($result->display_name == "") {
?>
<a href="renamefiles.php?action=rename&file_id=<?php echo $result->id; ?>&filename=<?php echo $display_name; ?>&assn_id=<?php echo $assn_id; ?>"><?php echo $display_name_fake; ?></a>
<?php
} else {
?>
<a href="renamefiles.php?action=rename&file_id=<?php echo $result->id; ?>&filename=<?php echo $display_name; ?>&assn_id=<?php echo $assn_id; ?>"><?php echo $result->display_name; ?></a>
<?php
}
?>
</td>
</tr>
<?php
}
echo "</table>";
}
}