我即将失去理智。我没有任何PHP经验,我正在努力学习php网络服务。
这是我的代码;
<?php
private $username2 = "";
private $password2 = "";
private $DB_CONNECTION;
private $servername = "localhost";
private $username = "root";
private $password = "";
private $dbname = "dptest";
function __construct()
{
$this->DB_CONNECTION = mysqli_connect($this->servername, $this->username,
$this->password, $this->dbname);
}
function getUserType(){
$sql = "SELECT usertype FROM `login_test` WHERE username = '". $this->username2."'AND password = '".$this->password2."'";
$result = mysqli_query($this->DB_CONNECTION,$sql);
//$value = mysqli_fetch_array($result);
while(!is_null($value = mysqli_fetch_array($result))){
return $value['usertype'];
}
}
}
这是我的功能代码。另一个是我的登录代码;
<?php
include_once 'Authentication.php';
use user\Authentication;
$auth = new Authentication();
$auth->prepare($_POST);
$userStatus = $auth->isUserValidToLogIn();
if ($userStatus) {
// user existed
// So log him to main page
$json['success'] = 1;
$json['message'] = 'access granted';
$json['usertype'] = $auth->getUserType();
echo json_encode($json);
} else {
$json['success'] = 0;
$json['message'] = 'error!';
echo json_encode($json);
}
我正在尝试获取用户的类型,但是当尝试从phpmyadmin本地数据库获取数据时,它只提供第一列的usertype。当我尝试获得第2,第3,第4等时..用户的usertype它不返回任何内容,空白页面显示在邮递员应用程序上。
我的数据库也是这样的;
usertype username password
admin despro 1234
client test 1234
client despro2 1234
client despro3 1234
答案 0 :(得分:0)
您只返回一列的原因是您只请求一列。为了获得您想要的列,您需要在查询中显式请求它们,或使用“*”来获取所有列。因此,您的查询应如下所示,以便从数据表中获取所有列:
$sql = "SELECT * FROM `login_test` WHERE username = '". $this->username2."'AND password = '".$this->password2."'";
一般情况下,我强烈建议您停止使用MySQLi扩展并开始使用PHP数据对象(PDO)。它使得使用预准备语句变得容易。这也使您的代码更安全。
然后你的查询看起来像这样(这不是完整的代码):
// connecting to db
$pdo = new PDO($dsn, $user, $pass, $opt);
$sql = 'SELECT *
FROM login_test
WHERE userName = :username
AND pass = :password;';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username2, PDO::PARAM_STR);
$stmt->bindParam(':password', $password2, PDO::PARAM_STR);
$res = $stmt->execute();
if ($res) {
$response["userdata"] = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$myData = array();
$myData["usertype"] = $row["usertype"];
$myData["username"] = $row["username"];
array_push($response["userdata"], $myData);
}
}
请注意,上面的代码用于返回多行数据。如果您只想要一行,那么请使用以下内容:
if ($res) {
$response["userdata"] = array();
$myData = array();
$myData["usertype"] = $row["usertype"];
$myData["username"] = $row["username"];
array_push($response["userdata"], $myData);
}
删除'while'语句。
您最近可能想看看我给出的答案。这是使用Android应用程序中的Web服务的综合示例。
How to insert all the SQL table data into an array in java [android studio]