如果我使用以下代码,一切正常:
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,给定布尔值
答案 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;
}