从页面内容中的非WP数据库/表访问数据

时间:2016-03-05 作者:tjb

我正在尝试将一组自制的(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
我知道有两排。

1 个回复
SO网友:tjb
<?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 \';
?>