2016-05-28 33 views
0

我在3個文件中創建2個表單:loginMHS.php,inputPerwalian.php,insertMataKuliah.phpPHP - 使用另一個表插入到數據庫

我有4個表中的數據庫:mahasiswamatakuliahkelasmahasiswa_kelas

mahasiswa表有以下字段:

nrp | nama | pass | jatah_sks | foto_profil

matakuliah表有以下字段:

kode_mk | nama | jumlah_sks | deskripsi

kelas表有以下字段:

kode_kelas | kode_mk | kode_periode | nama_kelas

mahasiswa_kelas表有以下字段:

nrp | kode_kelas

首先,loginMHS.php出現了。它有一個表格,其輸入存儲在var $nrp(來自mahasiswa表格)。登錄後,inputPerwalian.php出現。它也有一個表格,其輸入存儲在變量$kodeMK(來自matakuliah表)& $namaKelas(來自kelas表)。然後,輸入將被插入到表mahasiswa_kelas

這是我的代碼(輸入不能被存儲到數據庫,但它沒有顯示錯誤):

$sql = "select kode_kelas from kelas inner join mahasiswa_kelas" 
     . " on kelas.kode_kelas = mahasiswa_kelas.kode_kelas" 
     . " where nama_kelas=" . $namaKelas; 
$result = mysqli_query($link, $sql); 

$sql2 = "insert into mahasiswa_kelas (nrp, kode_kelas)" 
     . " values ($nrp, $result)"; 
$result2 = mysqli_query($link, $sql2); 
$row2 = mysqli_fetch_array($result2); 

我不知道如何將其插入,而inputed數據從另一個表。因爲,據我所知,我不能在插入查詢中使用內部連接。如何解決它?請解釋你的答案。謝謝

+0

mahasiswa_kelas表中的kode_kelas類型是什麼?使用var_dump查看mysqli_query返回$ result的結果。 –

+0

@NicholasAlexander類型爲int –

+0

mysql_query在錯誤(即int)或可用於獲取結果的資源時應返回FALSE:請參閱http://php.net/manual/en/mysqli.quickstart.statements.php - 我認爲你被一個返回的錯誤情況絆倒了,但我強烈鼓勵理解是這裏真正的答案。 –

回答

1

mysqli_query()返回一個對象,因此您不能插入$result作爲值。看看他們如何處理它在手冊mysqli_fetch_row這應該照顧你的問題

更新: 不知道你的意思是'使用',但我認爲不是。 。 。繼續閱讀。你需要從mysqli_fetch_row()解析你的數組。看看

if ($result = mysqli_query($link, $query)) { 

/* fetch associative array */ 
while ($row = mysqli_fetch_row($result)) { 
printf ("%s (%s)\n", $row[0], $row[1]); 
} 
free result set */ mysqli_free_result($result); 

}` 

更新2: 不知道我是否應該寫你的代碼,但在這裏你去。如上所述,mysqli_query()返回$ result作爲對象。 mysqli_fetch_row()以數組形式返回$ result。從適當的數組索引中獲取值並將其分配給變量$kode_kelas_value。用$ sql2查詢將該變量插入到數據庫中。

$sql = "select kode_kelas from kelas inner join mahasiswa_kelas" 
     . " on kelas.kode_kelas = mahasiswa_kelas.kode_kelas" 
     . " where nama_kelas=" . $namaKelas; 
if ($result = mysqli_query($link, $sql)) { 

    while ($row = mysqli_fetch_row($result)) { 
     $kode_kelas_value = $row[0]; 
    } 
    /*free result set */ 
    mysqli_free_result($result); 

}` 

    $sql2 = "insert into mahasiswa_kelas (nrp, kode_kelas)" 
      . " values ($nrp, $kode_kelas_value)"; 
    $result2 = mysqli_query($link, $sql2); 
    $row2 = mysqli_fetch_array($result2); 
+0

那我可以用這個嗎? 'mixed mysqli_fetch_row(mysqli_result $ result)' –

+0

只是爲了澄清mysqli_query()返回一個對象。 mysqli_fetch_row()'將結果行作爲枚舉數組'。你試圖插入的數據是在數組的元素中,因此,循環數組,將值賦給變量並將這些變量插入到使用$ sql2的數據庫中。有更有效的方法來做到這一點,但編輯你的方法,這是你要做的。 – dg4220

+0

對不起,但我仍然對此感到困惑。那麼,你能否更新你的答案並直接回答我的問題?然後,從你的代碼解釋。也許,我可以用這種方式理解更多。謝謝 –

0

您應該使用連接查詢來獲取nrp,kode_kelas值。如果你有完美的價值,那麼你可以插入簡單的知道。任何疑問都會問我。

+0

你能給出更具體的答案嗎?也許你可以直接回答我的問題? –

+0

我在下一個答案中回答 –

0

首先,您可以從loginMHS.php獲取nrp值。您必須將該nrp值傳遞給inputPerwalian.php。在inputPerwalian。PHP你可以得到kodemk的價值。如果您提交該表單,您將獲得2個重要的需要的數據,即nrp和kodemk。現在你會有nrp和kodemk。

現在您必須使用nrp,kode_kelas插入mahasiswa_kelas。你已經有了nrp,但是你沒有kode_kelas。爲了獲得kode_kelas值,您必須通過選擇查詢從kelas表中選擇kode_kelas數據。

"SELECT kode_kelas FROM kelas where kode_mk = kodemk " 

使用此查詢可以獲得kode_kelas值。

現在您可以在mahasiswa_kelas中插入nrp和kode_kelas值。

希望它會有幫助。

相關問題