私は自作の(PHP/MySQL)ウェブページのセットをWPに変換しようとしています。私は欲しいテーマをインストールしました、そしていくつかの基本的なページはうまく動いています。
しかし、MySQLデータベーステーブル(WPデータベースとは別に)内にデータのセットがあり、それをクエリして、いくつかの行(以下の例では50)を抽出して日付順に表示します。 WP Webページのコンテンツの表にあります。
私はexec-PHPプラグインをインストールして、単純なものが期待通りに動作することを証明しました。
自分のデータベース(自分のデータベースのWPデータベースと同じホストシステム)にある自分のテーブルからデータを抽出するには、次のPHPを使用します。それはきれいではないかもしれませんが、私の自宅で育ったWebサイトのphpで純粋にコード化された時にはうまくいきました(以下に示すような古い詳細)。
それはWPの下には何も生成しません...あるいはテーマのためのWPデータベーステーブルと全く無関係の何かを生成します(異なる列、異なるDBテーブル)誰もが光を投げられます何が悪いの? (NB私が働きたいループを得るためにさまざまな組み合わせを試してみました。それから私はWPデータベーステーブルからデータのロードを取得します。
<table>
<!-- Retrieve the data from the table -->
<?php
DEFINE ('DB_USER','a_db_user_with select_permissions');
DEFINE ('DB_PASSWORD','users_passwd');
DEFINE ('DB_Host','localhost');
DEFINE ('DB_NAME','database_name');
//****old php connection details
//$dbc = @mysql_connect (DB_Host, DB_USER, DB_PASSWORD) OR die ('Could not connect to MySQL: ' . mysql_error() );
//@mysql_select_db (DB_NAME) OR die ('Could not select the database: ' . mysql_error() );
// new connection stuff for the WP page version
$my_db = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_Host);
$query = "SELECT col1, col2, col3, col4, col5, col6 FROM tablename ORDER BY Date_presented DESC LIMIT 50";
// Old query execution and results collections
//$result = @mysql_query ($query);
//$num = mysql_num_rows ($result);
// New details for WP page
$result = $my_db->get_results($query);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo '<tr><td align="left" style="width: 6%; font-size: 9pt">' . $row['col1'] . '</td>
<td align="left" style="width: 18%; font-size: 9pt">' . $row['col2'] . '</td>
<td align="left" style="width: 38%; font-size: 9pt">' . $row['col3'] . '</td>
<td align="left" style="width: 25%; font-size: 9pt">' . $row['col4'] . '</td>
<td align="left" style="width: 8%; font-size: 9pt">' . $row['col5'] . '</td>
</tr>';
}
?>
</table>
今のところ繰り返しを無視します - 今は単純化したバージョンを持っていますが、それはまだ期待していた2ではなく "0 in table"を返します。
<?php
$my_db = new wpdb('fred','bloggs','database','localhost');
$query = "SELECT DATE_FORMAT(col1, '%d-%b') AS Pdate, DATE_FORMAT(col1, '%Y') AS Pyear, col2, col3, col4, col5 AS fname FROM $my_db->Table ORDER BY col1 DESC LIMIT 50";
$result = $my_db->get_results($query);
echo $my_db->num_rows . ' in table ';
?>
わかりましたので、show_errorsを使用して次のように実行できます。
$my_db->show_errors();
そしてそれでそれが好きではないことがわかります:
"FROM $my_db->table" and prefers
"FROM table" only
そして私は私が知っている2行を取得しています。
<?php
$mydb = new wpdb('uid','passwd','database','localhost');
$mydb->show_errors();
$query = "SELECT DATE_FORMAT(col1, '%d-%b') AS Pdate, DATE_FORMAT(col1, '%Y') AS Pyear, col2, col3, col4, col5 AS fname FROM table ORDER BY col1 DESC LIMIT 50";
$result = $mydb->get_results($query);
echo $mydb->num_rows . ' in table ';
?>