在函数中使用mysqli全局变量不起作用

时间:2017-07-20 04:58:15

标签: php mysqli

如果我使用以下代码,一切正常:

function likecount($id) {
$link = mysqli_connect('localhost', 'root', '', 'printstagram');
    $query = $link->query("SELECT likes FROM photos WHERE id='$id'");
    $a = mysqli_fetch_row($query);
    $b=$a[0];
    echo $b;
}

如果我使用名为dbconfig.php的文件,其中包含以下代码:

$link = mysqli_connect('localhost', 'root', '', 'printstagram');

然后我在我使用likecount函数的php页面上包含dbconfig.php,然后使用global关键字:

function likecount($id) {
    global $link;
    $query = $link->query("SELECT likes FROM photos WHERE pid='$id'");
    $a = mysqli_fetch_row($query);
    $b=$a[0];
    echo $b;
}

我收到一个错误:mysqli_fetch_row()要求参数1为mysqli_result,给定布尔值。

有人能告诉我错误来自哪里?该功能负责计算和更新喜欢的数量。如果我每次调用函数时都使用mysqli_connect,我会在页面中多次使用mysqli_connect,这是一个问题吗?与全局$ link相比,我相信每次调用函数时建立连接都会给服务器增加更多压力。

我进行了一些进一步的测试,代码如下:

<?php
include('dbconfig.php');
global $link;
echo $link;
?>

我得到了:可捕获的致命错误:类mysqli的对象无法转换为字符串。 这被认为是一种普通的行为吗?

我进行了另一次测试,以下代码将顺利运行(但每次调用该函数时都会建立连接):

<?php

function likes2($id) {
  $link = mysqli_connect('localhost', 'root', '', 'printstagram');

    $query = $link->query("SELECT likes FROM photos WHERE pid='$id'");

    $a = mysqli_fetch_row($query);
    $b=$a[0];
    echo $b;

}
?>

但是以下没有:

<?php
$link = mysqli_connect('localhost', 'root', '', 'printstagram');
function likes2($id) {

    global $link;
    $query = $link->query("SELECT likes FROM photos WHERE pid='$id'");
    $a = mysqli_fetch_row($query);
    $b=$a[0];
    echo $b;

}
?>

它给出了错误:mysqli_fetch_row()期望参数1为mysqli_result,给定布尔值

2 个答案:

答案 0 :(得分:0)

这就像index.php一样

require "dbconnect.php";
function likecount($item_id) {
    global $link;
    $query = $link->query("SELECT likes FROM photos WHERE pid='$item_id'");
    $a = mysqli_fetch_row($query);
    $b=$a[0];
    echo $b;
}
likecount($item_id);

这是dbconnect.php

$link = mysqli_connect('localhost', 'root', '', 'printstagram')

答案 1 :(得分:0)

我检查过你们两个代码都正常工作!问题可能出在您的数据库名称上,您使用了两个不同的数据库&#34; test&#34;和&#34; printstagram&#34;可能是&#34; printstagram&#34;数据库printstagram的照片表没有您要搜索的ID的记录。

您可以检查是否有这样的记录。

if($a = mysqli_fetch_row($query)){
    $b=$a[0];
    echo $b;
}