【问题标题】:PHP Warning: mysqli_query() expects parameter 1 to be mysqli, null given [duplicate]PHP 警告:mysqli_query() 期望参数 1 为 mysqli,给定 null [重复]
【发布时间】:2018-05-21 16:16:07
【问题描述】:

抱歉,有重复的问题,但有人可以帮我解决这个问题吗?我是 PHP 新手,似乎没有一个解决方案有效。

Error Screeshot

代码如下:

// Add Signature Image after single post and page
add_filter('the_content','add_signature', 1);
function add_signature($text) {
global $post;
if(($post->post_type == 'post') || ($post->post_type == 'page')){
//$sql_site_d = "select * from orders_discounts";
$sql_site_d = "select * from orders_discounts where url = 'homeworkmaid.com' and status =1";

$rs_results_site_d = mysqli_query($sql_site_d) or die(mysqli_error());
$total_site_d = mysqli_num_rows($rs_results_site_d);
if ($total_site_d > 0){
$row_site_d = mysqli_fetch_array($rs_results_site_d);   

【问题讨论】:

  • 你需要传入一个连接,而不仅仅是这里的查询:$rs_results_site_d = mysqli_query($sql_site_d) or die(mysqli_error()); 这看起来像 Wordpress,所以你可能需要$rs_results_site_d = mysqli_query($wpdb, $sql_site_d) ...
  • “对不起,重复的问题......似乎没有一个解决方案有效。” 关于这个错误有几篇关于 SO 的帖子。请解释他们如何在这里没有帮助。
  • 在使用 Wordpress 时,它已经为您提供了您需要的数据库查询功能。改用它们。这里:$wpdb
  • 大多数(如果不是全部)解决方案都提倡“传递连接”,因此我将第 120 行编辑为 $rs_results_site_d = mysqli_query($con, $sql_site_d) 或 die(mysqli_error());同样的错误! PS:我不是程序员,取决于反复试验!
  • @IbrahimShendy 我已经调整了,但仍然没有改变。这是整个代码:link

标签: php mysqli


【解决方案1】:

由于您使用的是 Wordpress,我建议您使用他们的 $wpdb 全局对象,您可以通过首先全局调用它来使用它:global $wpdb;。然后,您将可以使用 $wpdb->get_results( 'query', output_type ); 之类的函数,而不是 mysqli 函数。 See the WP codex

但如果你想使用mysqli_ 函数,你仍然可以使用$wpdb,它有一个mysqli 对象,你可以通过$wpdb->dbh 访问它。这将是您的mysqli_ 函数所需的mysqli 连接对象。

将此应用于您的代码:

// Add Signature Image after single post and page
add_filter('the_content','add_signature', 1);
function add_signature($text) {
    global $post, $wpdb;
    if(($post->post_type == 'post') || ($post->post_type == 'page')){
        //$sql_site_d = "select * from orders_discounts";
        $sql_site_d = "select * from orders_discounts where url = 'homeworkmaid.com' and status =1";

        $rs_results_site_d = mysqli_query($wpdb->dbh, $sql_site_d) or die(mysqli_error($wpdb->dbh));
        $total_site_d = mysqli_num_rows($rs_results_site_d);
        if ($total_site_d > 0){
            $row_site_d = mysqli_fetch_array($rs_results_site_d);  
            ....
        }
    }
}

修改后的行:

第 4 行: global $post, $wpdb;

第 9 行: $rs_results_site_d = mysqli_query($wpdb->dbh, $sql_site_d) or die(mysqli_error($wpdb->dbh));

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多