【发布时间】:2017-12-25 14:35:50
【问题描述】:
如果我使用以下代码一切正常:
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,然后使用全局关键字:
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,boolean given
【问题讨论】:
-
错误提示您的查询执行失败
-
我知道,但我想知道它失败的原因。我看了这个答案:stackoverflow.com/questions/10836078/… 我不知道为什么他们的代码有效,但我的无效
-
据我所知,您的代码没有任何问题,可能是由于您的数据库,显示您的
photo数据库架构或数据库内容。该错误表明您的mysql_fetch_row($qeury)没有产生任何结果。 -
嗨hchueng,如果我的数据库有问题,它不应该“可选”地工作。问题是只要我每次调用函数时都建立一个新的mysqli连接,一切都会顺利进行,但是如果我使用全局$link它就不会
-
当您将
echo $link->error();放在与$link->query()的链接之后的likecount函数中时会打印什么?