我正在尝试将一组自制的(PHP/MySQL)网页转换为WP。我已经安装了我想要的主题,并且有一些基本页面可以正常工作。
但是,我在MySQL数据库表中有一组数据(与WP数据库分离),我想查询这些数据,提取一些行(在下面的示例中为50行),并在WP网页内容的表中按日期顺序显示它们。
我已经安装了exec PHP插件,并证明了一个简单的插件可以按预期工作。
为了从我自己的数据库(与WP数据库在同一主机系统上)中的我自己的表中提取数据,我使用以下PHP。它可能并不漂亮,但在我自己开发的网站上(旧的详细信息如下所示)纯用php编写时,它工作得很好。
它在WP下不会产生任何东西。。。或者,它为主题生成了与WP数据库表完全无关的内容(不同的列,不同的DB表),有人能解释出什么问题吗?(注意,我尝试了各种组合来实现我想要的循环——然后我从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>
更新#1:暂时忽略迭代-我现在有一个简化版本,但它仍然返回“表中的0”,而不是我预期的2:
<?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 \';
?>
更新#2:正常,因此我发现可以使用以下方法显示\\u错误:
$my_db->show_errors();
由此可以看出,它不喜欢:
"FROM $my_db->table" and prefers
"FROM table" only
我知道有两排。