【发布时间】:2014-05-13 12:38:35
【问题描述】:
我的functions.php 文件中有几个函数。我想向函数添加查询,但是当我这样做时,它不起作用。它只是不显示查询的结果。当我将查询添加到主页并包含该功能时,它确实有效。
我包含了配置文件,所以这不是问题。我也想到了作用域,所以在函数里面加了GLOBAL $mysqli;,但是还是不行。知道这里有什么问题吗?我宁愿在函数中包含查询,这样我就不必将它们添加到主页。
我的功能:
function friends($friendship) {
GLOBAL $mysqli;
$friendship = mysqli_query($mysqli,"SELECT * FROM friends WHERE friend_one = '$my_username' OR friend_one = '$username'
AND friend_two = '$username' OR friend_two = '$my_username'
AND invite_sent = 1 AND invite_accepted = 1 ");
if (mysqli_num_rows($friendship) == 1){
return true;
} else {
return false;
}
}
这是检查我是否与某人成为朋友的部分。
<?php if (friends($friendship) == true) : ?>
We are friends hooray!
<?php endif; ?>
编辑 #1 - 合并 主页面的代码和函数结合后的样子是这样的:
function friends($friendship) {
$user_id = $_SESSION['user_id'];
//Zoek de username op van ingelogde user
$stmt = $mysqli->prepare("SELECT username, email FROM members WHERE user_id = ? ");
$stmt->bind_param('i', $user_id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($my_username, $my_email);
$stmt->fetch();
$stmt->close();
$username = $_GET["username"];
//Zoek de gebruiker en zijn/haar gegevens in de db
$stmt = $mysqli->prepare("SELECT user_id, gender, email, protected FROM members WHERE username = ? ");
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($userid, $gender, $email, $protected);
$stmt->fetch();
$stmt->close();
$friendship = mysqli_query($mysqli,"SELECT * FROM friends WHERE friend_one = '$my_username' OR friend_one = '$username'
AND friend_two = '$username' OR friend_two = '$my_username'
AND invite_sent = 1 AND invite_accepted = 1 ");
if (mysqli_num_rows($friendship) == 1){
return true;
} else {
return false;
}
}
【问题讨论】:
-
那你的错误是什么?或究竟是什么不起作用?
-
不要使用全局。请。只是不要。不要这样做。甚至不要考虑尝试使用全局。
-
在查询语句中声明了一堆变量,没有一个显示你是如何创建的。查询可能因此而失败。
-
你正在使用
$my_username,你没有在这个函数中定义。 -
@NiettheDarkAbsol 还有
$username。