有人可以在PHP中帮我解决问题吗? 为什么我在使用连接4表或更多表格显示表记录时获得多条记录?并且在表中它有2个记录但是在显示(在网上)它变成了6个记录?为什么???我正在使用的脚本是错误的还是什么??? 脚本:
<div class="modal-body row">
<?php
//$id = $_GET['nip'];
$qry="
select
tb_dosen.nip, tb_dosen.nidn_nidk, tb_dosen.nama, tb_dosen.jenis_kelamin, tb_dosen.alamat, tb_dosen.telepon, tb_dosen.agama, tb_dosen.pendidikan_terakhir, tb_dosen.jabatan, tb_dosen.email, tb_dosen.foto,
tb_bimbingan.no_bimbingan, tb_bimbingan.nip, tb_bimbingan.tahun_bimbingan, tb_bimbingan.nama_mahasiswa,tb_bimbingan.judul,
tb_pendidikan.no_pendidikan, tb_pendidikan.nip, tb_pendidikan.tahun_lulus, tb_pendidikan.jenjang, tb_pendidikan.gelar, tb_pendidikan.nama_universitas, tb_pendidikan.bidang_ilmu, tb_pendidikan.no_ijasah,
tb_buku.no_buku, tb_buku.nip, tb_buku.penulis, tb_buku.judul_buku, tb_buku.penerbit_buku, tb_buku.tahun_terbit,
tb_jabatan_ak.no_jabatan, tb_jabatan_ak.nip, tb_jabatan_ak.tahun_diangkat, tb_jabatan_ak.posisi, tb_jabatan_ak.no_sk,
tb_jafung.no_jafung, tb_jafung.nip, tb_jafung.tahun_jafung, tb_jafung.jafung, tb_jafung.sk_jafung, tb_jafung.sk_sertifikasi,
tb_penelitian.no_penelitian, tb_penelitian.nip, tb_penelitian.tahun_penelitian, tb_penelitian.judul_penelitian, tb_penelitian.tempat_publikasi,
tb_pengajaran.no_pengajaran, tb_pengajaran.nip, tb_pengajaran.tahun_akademik, tb_pengajaran.semester, tb_pengajaran.mata_kuliah, tb_pengajaran.sk_mengajar,
tb_penghargaan.no_penghargaan, tb_penghargaan.nip, tb_penghargaan.tanggal_penghargaan, tb_penghargaan.jenis_penghargaan, tb_penghargaan.pemberi,
tb_pkm.no_pkm, tb_pkm.nip, tb_pkm.tahun_pkm, tb_pkm.judul_pkm, tb_pkm.tempat_pkm, tb_pkm.publikasi_pkm,
tb_seminar.no_seminar, tb_seminar.nip, tb_seminar.judul_seminar, tb_seminar.sebagai, tb_seminar.jenis_seminar, tb_seminar.kota, tb_seminar.tanggal_seminar
from tb_dosen
INNER JOIN tb_bimbingan ON tb_bimbingan.nip = tb_dosen.nip
INNER JOIN tb_pendidikan ON tb_pendidikan.nip = tb_dosen.nip
INNER JOIN tb_buku ON tb_buku.nip = tb_dosen.nip
INNER JOIN tb_jabatan_ak ON tb_jabatan_ak.nip = tb_dosen.nip
INNER JOIN tb_jafung ON tb_jafung.nip = tb_dosen.nip
INNER JOIN tb_penelitian ON tb_penelitian.nip = tb_dosen.nip
INNER JOIN tb_pengajaran ON tb_pengajaran.nip = tb_dosen.nip
INNER JOIN tb_penghargaan ON tb_penghargaan.nip = tb_dosen.nip
INNER JOIN tb_pkm ON tb_pkm.nip = tb_dosen.nip
INNER JOIN tb_seminar ON tb_seminar.nip = tb_dosen.nip
where tb_dosen.nip = '$_GET[nip]'
";
$hasil=mysql_query($qry) or die ("".mysql_error());
$row = mysql_num_rows($hasil) or die ("".mysql_error());
$data=mysql_fetch_array($hasil) or die ("".mysql_error());
?><table class="table table-condensed">
<tr>
<th>No.</th>
<th>Tahun Lulus</th>
<th>Jenjang</th>
<th>Gelar</th>
<th>Nama Universitas</th>
<th>Bidang Ilmu</th>
<th>No. Ijazah</th>
</tr>
<?php
while ($k=mysql_fetch_array($hasil))
{
$a=$k['no_pendidikan'];
$b=$k['tahun_lulus'];
$c=$k['jenjang'];
$d=$k['gelar'];
$e=$k['nama_universitas'];
$f=$k['bidang_ilmu'];
$g=$k['no_ijasah'];
?>
<tr>
<td><?php echo $a ?></td>
<td><?php echo $b ?></td>
<td><?php echo $c ?></td>
<td><?php echo $d ?></td>
<td><?php echo $e ?></td>
<td><?php echo $f ?></td>
<td><?php echo $g ?></td>
</tr>
<?php } ?>
</table>
对不起,如果我使用印度尼西亚语,为表 抱歉我的英语不好#
for pic#goo.gl/6mT0gi
答案 0 :(得分:0)
您的sql语句似乎有问题。
对于每个连接,您可以创建一种相乘的结果集。因此,如果基表中有3条记录,而连接表中有两条记录,则结果中会得到6行。连接条件通常会通过删除与其不匹配的行来减少此计数。
检查每个数据库表中的'nip'值,如果有一行包含相同的值,那么就会有加倍条目的来源。
答案 1 :(得分:0)
@Joachim Schirrmacher
在数据库表中,比如说, tb_dosen是tb_table1,tb_pendidikan是tb_table2,tb_buku是tb_table3,直到tb_table10,导致这10个表与tb_table1有关(就像关系1到很多)。
即时查看数据库每个表都有2条记录(现在),首先是&#34; nip1&#34; (比如说,nip就像是必须具有的数字,以及#34; nip2&#34;。
现在在tb_table2这4条记录中有4条记录(现在只添加1条)有一个名为&#34; nip&#34; (关系的外键),每个&#34; nip&#34;在tb_tbale2中有2个记录,而另一个表也会变得像tb_table2 ....所以当我点击这些&#34; nip1&#34; (主要的一个)另一个表上的另一个 nip (tb_table3到10)将只显示我点击的数据,但当我使用该查询时,记录它变成多个,为什么???