我正在尝试访问一个由pods创建的表,这是一个名为palyer rankings的自定义表。这是一个页面模板。
我不确定我这样做是正确的,因为无论我做什么,它都会打印图标,这不应该导致它们是我正在寻找的球员id的条目。
<?php  
$playerId='16-18-4500000';
  $myrows = $wpdb->get_results("SELECT * FROM 4hSIc_pods_player_ranking WHERE player_id='".$playerId."'" );
$num_rows = mysql_num_rows($myrows);
    if($num_rows) {
        echo "$num_rows Rows\n";
    }
    else
        {
echo "<li> <a href='#thanks' role='button' class='btn' data-toggle='modal'><i class='fa fa-hand-peace-o'></i>'".$playerId."</a></li>";
 }
?>我只想打印图标,如果他们在系统中没有挂起的点。

发布于 2015-11-02 20:11:32
你的方法有几个问题:
您不能转义您的数据- wpdb类有为您转义的方法,请确保您使用它们。
下面是如何使用$wpdb->prepare()重写查询以转义player_id
$myrows = $wpdb->get_results( $wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}pods_player_ranking
    WHERE player_id=%s", $playerId ) );另一件事是,您试图在一个实际上是数组的变量上使用PHP的mysql*函数($wpdb->get_results()返回一个数组,而不是mysql_result)。
此外,当您的查询只期望一个结果时,您可以使用$wpdb->get_row() -因为这将以您指定的格式直接返回行。下面是它的样子:
$row = $wpdb->get_row( $wpdb->prepare(
    "SELECT * FROM {$wpdb->prefix}pods_player_ranking
    WHERE player_id=%s", $playerId ), OBJECT );get_row函数的第二个参数是以下三个参数之一:
stdClass实例的形式返回结果-一个简单的stdClass-它以关联数组的形式返回结果(其列名是我还用{$wpdb->prefix}替换了pods_player_ranking之前的文本,因为我假设这是您的表前缀。最好使用wpdb的前缀属性,而不是硬编码前缀(如果您编写的代码将被多个站点使用,那么当前缀不同时,您可能会遇到代码无法工作的问题)。
我推荐的最后一件事是在开发新站点或开发新特性时使用调试(将此代码添加到wp-config.php:define( 'WP_DEBUG', true );中)。有时,这可能会使浏览站点变得非常困难/不可能(如果插件或主题代码产生了许多通知/错误消息),因此您可以使用以下代码:
if ( isset( $_GET['debug'] ) ) {
    define( 'WP_DEBUG', true );
}这样,无论何时将?debug添加到当前URL,都可以显示调试消息。
关键是,如果您启用了调试,那么您很可能会看到如下所示的错误:
Warning: mysql_num_rows() expects parameter 1 to be resource, array given in /path/to/file.phphttps://stackoverflow.com/questions/33468095
复制相似问题