【发布时间】:2019-08-19 03:14:42
【问题描述】:
大部分变量都用我的语言表示,对此感到抱歉。另外请记住,我对 php/mysql 知之甚少,因为即使我的学校老师也不知道它是什么。
在我的数据库中有 4 个表。这些表只有主键。这些表没有任何外键或对其他表的引用。
这是因为在我的学校项目中,我们被告知不要添加外键和引用。这意味着我不能/不知道如何使用JOIN。
目前我正在尝试输出 4 个表中的所有数据,并使用 html/css 将它们输出为 1。
我的主要问题是我不知道如何从不同的行输出数据。
我尝试使用mysqli_data_seek 来选择我的counter($no) 的每一行,但似乎我使用它错误或者它不应该这样做。
我也尝试过使用mysqli_fetch_assoc,但我仍然得到相同的输出。
我已连接到我的数据库
这是代码mysqli_data_seek
<?php
$row = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
$no = 0;
if (mysqli_num_rows($row) > 0) {
while ($stok = mysqli_fetch_assoc($row)) {
$stok = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
$datastok = mysqli_data_seek($stok, $no);
//get data from "barang' table
$barang = mysqli_query($connection, "SELECT Nama_Barang, no_Barang from barang");
$databarang = mysqli_data_seek($barang, $no);
//get data from "lokasi"
$lokasi = mysqli_query($connection, "SELECT Jenis_Barang from lokasi");
$datalokasi = mysqli_data_seek($lokasi, $no);
//get data from "tarikh" table
$tarikh = mysqli_query($connection, "SELECT Tarikh_Beli from tarikh");
$datatarikh = mysqli_data_seek($tarikh, $no);
$no++;
然后在此之后,我将有一个输出连接到已经创建的表(这仍在 while 循环中)
echo '<tr>';
echo '<td>'.$no.' </td>';
echo '<td>'.$datastok.'</td>';
echo '<td>'.$databarang.'</td>';
echo '<td>'.$datalokasi.'</td>';
echo '<td>'.$datastok.'</td>';
echo '<tr>';
这是mysqli_fetch_assoc的代码
<?php
$rowstok = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
$no = 0;
if (mysqli_num_rows($rowstok)> 0) {
while ($stok = mysqli_fetch_assoc($rowstok)) {
$stok = mysqli_query($connection, "SELECT Kod_Barang, Kod_Rak, Harga, Tarikh_Jual from stok");
$datastok = mysqli_fetch_assoc($stok);
//get data from "barang" table
$barang = mysqli_query($connection, "SELECT Nama_Barang, Bil_Barang from barang");
$databarang = mysqli_fetch_assoc($barang);
//get data from "lokasi" table
$lokasi = mysqli_query($connection, "SELECT Jenis_Barang from lokasi");
$datalokasi = mysqli_fetch_assoc($lokasi);
//get data from "tarikh" table
$tarikh = mysqli_query($connection, "SELECT Tarikh_Beli from tarikh");
$datatarikh = mysqli_fetch_assoc($tarikh);
$no++;
这里又是我的输出表
//output table
echo '<tr>';
echo '<td>'.$no.' </td>';
echo '<td>'.$datastok['Kod_Barang'].'</td>';
echo '<td>'.$databarang['Nama_Barang'].'</td>';
echo '<td>'.$datalokasi['Jenis_Barang'].'</td>';
echo '<td>'.$datastok['Harga'].'</td>';
echo '<tr>';
现在输出只是根据行数多次显示第一行数据。而且我的counter($no) 增加了 2 (1,3,5,7,....) 不是预期的 1
我试图让它成为每行数据。
【问题讨论】:
-
你仍然可以在没有显式外键的情况下使用 JOIN,只要每个表中都有值匹配的字段。您现在尝试做的事情非常低效。我不知道为什么学校告诉你不要创建外键,这很倒退。也许,正如你所说,他们不知道自己在做什么。
-
@ADyson 从我尝试使用 join 我似乎无法适合我的所有数据,因为它说列数不同。你能给我举个例子吗?
-
首先请 a) 显示您的查询,b) 显示确切的错误消息。我不知道你应该如何写你的加入,因为我不知道你想加入使用哪些字段。我看不到你的桌子设计,别忘了。
-
@ADyson 我很抱歉,但多亏了你,我决定用 2 个表重试“JOIN”,它工作了,但是一个如何加入多个表?我不确定如何向您展示我的数据库,但如果您不介意,您可以使用任何数据库作为示例