为什么我的PHP文件中的include不包含我的变量?
我的Android应用程序中有3个php文件-为什么我的PHP文件中的include不包含我的变量?,php,android,php-include,Php,Android,Php Include,我的Android应用程序中有3个php文件-dbConnect.php,用于连接数据库;volleyLogin.php,用于登录用户;以及UserDetails.php,用于获取有关登录用户的一些信息 当在我的浏览器中运行这些文件时,它们工作得非常好,但当从我的Android应用程序运行时,UserDetails.php不起作用。它不断返回“0结果”,我被告知变量username未定义,即使我使用include语句,该语句应该将一个PHP文件的内容插入另一个PHP文件 我的dbConnect.
dbConnect.php
,用于连接数据库;volleyLogin.php
,用于登录用户;以及UserDetails.php
,用于获取有关登录用户的一些信息
当在我的浏览器中运行这些文件时,它们工作得非常好,但当从我的Android应用程序运行时,UserDetails.php
不起作用。它不断返回“0结果”,我被告知变量username
未定义,即使我使用include
语句,该语句应该将一个PHP文件的内容插入另一个PHP文件
我的dbConnect.php
如下所示:
<?php
define ('HOST', 'localhost');
define ('USER', 'root');
define ('PASS', 'password');
define ('DB', 'dbname');
$con = mysqli_connect("localhost", "root", "password", "dbname") or die('Unable to Connect');
?>
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$username = $_POST['username'];
include('dbConnect.php');
$sql = "SELECT * FROM user WHERE username = '$username'";
$result = mysqli_query($con,$sql);
$check = mysqli_fetch_array($result);
if(isset($check)){
echo 'success';
} else {
echo 'Could not log in';
}
}
?>
<?php
include('dbConnect.php');
include('volleyLogin.php');
$resultSet = $con->query("SELECT category.cat_name FROM category INNER JOIN user ON category.user_id =
user.user_id WHERE user.username = '$username' ")
or die($con->error);
if ($resultSet->num_rows > 0) {
while($rows = $resultSet->fetch_assoc()) {
$catname = $rows['cat_name'];
echo "<p> Name: $catname </p>";
}}
else {
echo "0 results";
}
//echo "userdetails.php works";
$con->close();
?>
而UserDetails.php
如下所示:
<?php
define ('HOST', 'localhost');
define ('USER', 'root');
define ('PASS', 'password');
define ('DB', 'dbname');
$con = mysqli_connect("localhost", "root", "password", "dbname") or die('Unable to Connect');
?>
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$username = $_POST['username'];
include('dbConnect.php');
$sql = "SELECT * FROM user WHERE username = '$username'";
$result = mysqli_query($con,$sql);
$check = mysqli_fetch_array($result);
if(isset($check)){
echo 'success';
} else {
echo 'Could not log in';
}
}
?>
<?php
include('dbConnect.php');
include('volleyLogin.php');
$resultSet = $con->query("SELECT category.cat_name FROM category INNER JOIN user ON category.user_id =
user.user_id WHERE user.username = '$username' ")
or die($con->error);
if ($resultSet->num_rows > 0) {
while($rows = $resultSet->fetch_assoc()) {
$catname = $rows['cat_name'];
echo "<p> Name: $catname </p>";
}}
else {
echo "0 results";
}
//echo "userdetails.php works";
$con->close();
?>
您的逻辑是错误的:
mysqli_*()
函数基本上要么返回对象/结果句柄,要么返回布尔值true(成功)/false(失败)。他们总是返回一些东西,因此:
$check = mysqli_fetch_array($result);
if(isset($check)){
这是错误的<代码>始终设置$check。您需要显式检查布尔值false以检测故障:
if ($check === false) {
die(mysqli_error($con));
}
请注意,在所有示例代码中,您都没有定义
$username
,因此您的查询是执行WHERE user.username='
,并且可能匹配0
行使用require
而不是include
并检查日志。我会查看您的答案,但是$username
在volleyLogin.php
中没有定义,当我说$username=$\u POST['username']代码>?