我的Android应用程序中有3个php文件 - dbConnect.php
,它与数据库volleyLogin.php
连接,用户登录UserDetails.php
,UserDetails.php
获取有关登录用户。
在我的浏览器中运行文件时,它们可以正常工作,但是从我的Android应用username
运行时,它们无法正常工作。它不断返回' 0结果'并且我被告知变量include
未定义,即使我使用dbConnect.php
语句,该语句应该将一个PHP文件的内容插入到另一个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');
?>
看起来像这样:
volleyLogin.php
我的<?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';
}
}
?>
是这样的:
UserDetails.php
<?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();
?>
看起来像这样:
$resultSet = $con->query("SELECT category.cat_name FROM category INNER JOIN user ON category.user_id =
user.user_id WHERE user.username = '$username' ")
问题在于:
client-combined 3.0.0 beta 3
答案 0 :(得分:1)
你的逻辑是错误的:mysqli_*()
函数基本上要么返回一个对象/结果句柄,要么返回一个布尔值true(成功)/ false(失败)。他们总是返回一些东西,所以:
$check = mysqli_fetch_array($result);
if(isset($check)){
错了。始终$check
将被设置。您需要显式检查boolean false以检测失败:
if ($check === false) {
die(mysqli_error($con));
}
请注意,在您的示例代码中,您没有定义$username
,因此您的查询正在执行WHERE user.username = ''
,并且可能与0
行匹配