Php PDO查询mysql数据库时不返回结果
我正在开发一个Android应用程序,它使用mysql数据库存储信息。当我的php代码中有以下函数时:Php PDO查询mysql数据库时不返回结果,php,android,mysql,sqlite,pdo,Php,Android,Mysql,Sqlite,Pdo,我正在开发一个Android应用程序,它使用mysql数据库存储信息。当我的php代码中有以下函数时: /* * Get User details * */ public function getUserDetailsEse($email) { $stmt = $this->conn->prepare(" SELECT u.title , u.name , u.surname , s.reg_num , s.barcode
/*
* Get User details
*
*/
public function getUserDetailsEse($email)
{
$stmt = $this->conn->prepare("
SELECT u.title
, u.name
, u.surname
, s.reg_num
, s.barcode
, s.prog
, s.yos
, s.sem
, s.nat_id
, s.dob
, s.mobile
, s.email
, s.addr
, s.registad_courses
FROM `users` u
, `students` s
WHERE u.id=s.uza_id
AND s.email= ?
");
$stmt->bind_param("s", $email);
$stmt->execute();
if ($stmt->num_rows > 0) {
// user existed
echo 'Query ran but nun';
$stmt->close();
return true;
} else {
// user not existed
echo 'Query ddnt run';
$stmt->close();
return false;
}
$stmt->close();
}
我想从mysql数据库中获取这些细节,然后将它们显示在我的sqlite数据库中,以便在应用程序中使用。然后,我使用以下命令调用该函数:
$details = $db->getUserDetailsEse($email);
if ($details!=FALSE){
$response1["error"] = FALSE;
$response1["id"] = $details["id"];
$response1["details"]["title"] = $details["title"];
$response1["details"]["name"] = $details["name"];
$response1["details"]["surname"] = $details["surname"];
$response1["details"]["reg_num"] = $details["reg_num"];
$response1["details"]["barcode"] = $details["barcode"];
$response1["details"]["prog"] = $details["prog"];
$response1["details"]["yos"] = $details["yos"];
$response1["details"]["sem"] = $details["sem"];
$response1["details"]["nat_id"] = $details["nat_id"];
$response1["details"]["dob"] = $details["dob"];
$response1["details"]["mobile"] = $details["mobile"];
$response1["details"]["email"] = $details["email"];
$response1["details"]["addr"] = $details["addr"];
$response1["details"]["registad_courses"] = $details["registad_courses"];
echo json_encode($response1);
} else {
$response1["error"] = TRUE;
$response1["error_msg"] = "Failed to fetch details. Login credentials are wrong. Please try again!";
echo json_encode($response1);
}
当我在phpmyadmin中运行查询时,它工作正常:
但是,当我尝试在Postman上运行它时,会出现以下错误:
下面是我要查询的两个表:
编辑:尝试打印$DETAILS
正如您在邮递员回复中看到的,登录凭据是错误的。 您是否在PDO上配置了连接 如果您正在使用PDO,请查看下面的连接
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
如果这仍然不起作用,则该点不在您的查询中。您是否尝试打印$details=$db->getUserDetailsEse($email);打印($details)@Poria我刚试过,我已经在编辑中添加了结果截图question@AntonyMatignon连接很好,这是我刚才使用的错误消息,它说凭据是错误的,你可以在上面的代码中看到,如果你阅读第二个代码片段,你会看到它是的,我第一次没有看到它。我们来看一下
$stmt=$this->conn->prepare(“从
用户的u,学生
s其中u.id=s.uza\u id和s.email=?”中选择u.title、u.name、u.姓氏、s.reg\u num、s.barcode、s.prog、s.yos、s.sem、s.nat\u id、s.dob、s.mobile、s.email、s.addr、s.registad\u课程”;`s.email=?,如果将?替换为:email,并在绑定参数中将s切换为email。是否有效?如果尝试使用bindParam()
没有下划线?它也不起作用,我实际上复制了你写的内容…但我将查询分为两个单独的查询,结果成功了,我想我现在要坚持下去…非常感谢!!!
public function getUserDetailsEse($email)
{
$stmt = $this->conn->prepare("
SELECT u.title
, u.name
, u.surname
, s.reg_num
, s.barcode
, s.prog
, s.yos
, s.sem
, s.nat_id
, s.dob
, s.mobile
, s.email
, s.addr
, s.registad_courses
FROM `users` u
, `students` s
WHERE u.id=s.uza_id AND u.email = :email
");
$stmt->bindParam("email", $email);
$stmt->execute();
if ($stmt->rowCount() > 0) {
// user existed
echo 'Query ran but nun';
$stmt->closeCursor();
return true;
} else {
// user not existed
echo 'Query ddnt run';
$stmt->closeCursor();
return false;
}
$stmt->closeCursor();
}