PHP Mysqli为提供的每个数据选择多行数据
我正试图从两个不同的表中为每个PHP Mysqli为提供的每个数据选择多行数据,php,mysqli,Php,Mysqli,我正试图从两个不同的表中为每个ID获取三个内容,即为我RegID 我的第一个查询是从表中选择DISTINCT RegID\u one,如果有多个,则应在其中选择allAttendanceStatus=缺席和AttendanceDate=Todays\u date 对于选择的每个RegID,应从同一表中选择不同的主题和标准 同一个id,它应该从表2中选择移动电话号码,它应该回音,然后重复第二次RegID如果存在,同样的应该重复到最后一次RegID 我得到的是DISTINCTregid,但在同一wh
ID
获取三个内容,即为我RegID
DISTINCT RegID\u one
,如果有多个,则应在其中选择allAttendanceStatus=缺席
和AttendanceDate=Todays\u date
RegID
,应从同一表中选择不同的主题
和标准
RegID
如果存在,同样的应该重复到最后一次RegID
DISTINCT
regid,但在同一while语句中,如果我使用fetch结果获得subject和standard以及register id,它只给我一个id、subject和standard,我不知道如何解决这个问题
我的编辑
现在,在我的示例数据库中,我有两个条目在AttendanceStatus
中表示缺席,因此在我的第一次选择中,我会删除重复项(如果存在),然后选择那些运行良好的2RegID
,现在我想在第二次查询中为每个RegID
选择Standard
和subject
也就是说,在while语句中有两个RegID
它只给了我一个,我需要这两个缺席的reg与各自不同的主题和标准一起显示出来
简单一点
RegID
通过删除重复项来选择缺席的人员RegID的
RegID
、Standard
和subject
进行回波AttendanceDate Standard Subjects RegID AttendanceStatus
2016-01-08 00:00:00 III BSc PCM PHY/CHEM PRACTICAL 1382043 Present
2016-01-08 00:00:00 III BSc PCM PHY/CHEM PRACTICAL 1382044 Present
2016-01-08 00:00:00 III BSc PCM PHY/CHEM PRACTICAL 1382045 Present
2016-01-08 00:00:00 III BSc PCM PHY/CHEM PRACTICAL 1382046 Absent
2016-01-08 00:00:00 III BSc PCM PHY/CHEM PRACTICAL 1382047 Absent
PHP Mysqli代码
$query="SELECT DISTINCT RegID FROM table_one WHERE AttendanceDate='2016-01-08 00:00:00' and AttendanceStatus='Absent'" ;
$data=mysqli_query($mysqli,$query)or die(mysqli_error());
if(mysqli_num_rows($data) > 0) {
while($row=mysqli_fetch_array($data)){
$StudentRegID= $row['RegID'];
$query="SELECT DISTINCT(CONCAT(Standard,Subjects)) AS standard_and_subject , RegID FROM table_one WHERE AttendanceDate='2016-01-08 00:00:00' and RegID='$StudentRegID'" ;
$data=mysqli_query($mysqli,$query)or die(mysqli_error());
if(mysqli_num_rows($data) > 0) {
while($row=mysqli_fetch_array($data)){
if($row['RegID'] != '' && $row['RegID'] != NULL){
$RegID = $row['RegID'];
$standard_and_subject = $row['standard_and_subject'];
echo $standard_and_subject;
echo $RegID;
}
}
}
}
}
存储mysql对象会产生相同的变量名 试试这个编码
while($standard_row=mysqli_fetch_array($data)){
if($standard_row['RegID'] != '' && $standard_row['RegID'] != NULL){
$RegID = $standard_row['RegID'];
$standard_and_subject = $standard_row['standard_and_subject'];
echo $standard_and_subject;
echo $RegID;
}
使用带有
连接的单个查询,而不是foreach
循环内的查询。而不是在PHP中检查空的RegID
,而是在SQL中过滤掉它们
$query = "SELECT DISTINCT t1.RegID, CONCAT(t2.Standard, t2.Subjects) AS standard_and_subject
FROM (SELECT DISTINCT RegID
FROM table_one
WHERE AttendanceDate='2016-01-08 00:00:00'
AND AttendanceStatus='Absent'
AND RegID != ''
AND RegID IS NOT NULL) AS t1
JOIN table_one AS t2 ON t1.RegID = t2.RegID
WHERE t2.AttendanceData = '2016-01-08 00:00:00'";
$data = mysqli_query($query) or die(mysqli_error());
if (mysqli_num_rows($data) > 0) {
while ($row = mysqli_fetch_assoc($data)) {
echo $row['standard_and_subject'];
echo $row['RegID'];
}
}
一行需要多行,对吗?或者你需要所有的regid在一个数组中,标准和主题在一个数组中,就像这样?你将如何获得它?你能解释一下吗?@jilesh是的,但对于具体的id,最终我需要从不同的表中选择一个值,正如我在第3点中提到的。请你编辑你的帖子,并设置你当前获得的内容和你期望的内容吗?@jilesh我编辑了我的帖子,请告诉我你需要什么\谢谢你的回复我在第二个查询中做了,但尽管有两个注册id,但如果需要第一个,它只会为第一个查询提供结果,使用echo$StudentRegID;第二个使用echo$standard_row['RegID'];