我有一个android是用PHP编写的,大约有三个表,我们的开发人员正在进行查询,并将结果放在json中。但是,当其他表中除了返回空的用户名之外没有任何行时,我就有问题了。但是,用户名已经在一个表中可用。它的查询如下
<?php
// Grab User submitted information
$UID = $_POST["UID"];
// Connect to the database
$con = mysqli_connect("localhost","myid","mypass", "mydb");
// Make sure we connected succesfully
if(! $con)
{
die('Connection Failed'.mysqli_connect_error());
}
// mysql_select_db("tabdevel_yourdb",$con);
$result = mysqli_query($con,"SELECT l.username,
q.quote_id,q.status,q.credit,q.QOD,
w.Total,w.Completed,w.Withdrawl,w.Credit
From quotes q,
login_details l,
user_details w
WHERE l.UID = q.UID
AND l.UID = w.UID
AND l.UID = '$UID' ");
//echo $result;
$json = array();
if($result==false)
{
die(mysqli_error());
}else
{
if(mysqli_num_rows($result))
{
while($row=mysqli_fetch_assoc($result)){
$json['Details'][]=$row;
}
}
}
$json_output1 = json_encode($json);
echo $json_output1;
?>我的数据库结构如下
login_details已提交:UID、用户名、电子邮件、手机号码、密码、图像。
报价已提交:quote_id、报价、状态、信用、UID、QOD、quote_date
user_details已提交:user_details_id,UID,信用卡,提款,总计,已完成
我们错过了什么?谢谢
发布于 2016-11-08 18:26:05
你要找的是 keyword。目前,您正在列出这样的表:
FROM quotes q, login_details l,user_details w它“工作”,但执行您无法控制的隐式联接类型。连接类型似乎是INNER JOIN。INNER JOIN要注意的关键是,如果任何给定的表都没有匹配的记录,则省略整个结果记录。
相反,听起来你想要更像LEFT OUTER JOIN的东西。这方面的语法更类似于:
FROM quotes q
LEFT OUTER JOIN login_details l
ON q.some_column = l.some_column
LEFT OUTER JOIN user_details w
ON q.another_column = w.another_column现在,我不知道你要加入的列,所以我只是把占位符放在那里。但希望你能明白。这个语法允许您显式地告诉数据库如何加入表,而不是隐式地让数据库“想出答案”。
这里关于LEFT OUTER JOIN的关键是,如果要连接的表中没有匹配的记录,则仍然包括原始表中的记录。(尽管使用联接表中的NULL值)。
https://stackoverflow.com/questions/40493879
复制相似问题