【问题标题】:PHP - Insert to Database Using Another TablePHP - 使用另一个表插入数据库
【发布时间】:2016-05-28 09:12:06
【问题描述】:

我在 3 个文件中制作了 2 个表格:loginMHS.phpinputPerwalian.phpinsertMataKuliah.php

我在数据库中有 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 出现了。它也有一个表单,它的输入存储在 var $kodeMK(来自matakuliah 表)和$namaKelas(来自kelas 表)中。然后,输入将被插入到表mahasiswa_kelas

这是我的代码(输入无法存储到 DB,但它没有显示错误):

$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);

我不知道如何插入它,而输入的数据来自另一个表。因为,据我所知,我不能在插入查询中使用内连接。如何解决?请解释你的答案。谢谢

【问题讨论】:

  • mahasiswa_kelas 表中kode_kelas 的类型是什么?用 var_dump 查看 mysqli_query 返回到 $result 的内容。
  • @NicholasAlexander 类型是 int
  • mysql_query 应该在错误(即 int)或可用于获取结果的资源时返回 FALSE:请参阅 php.net/manual/en/mysqli.quickstart.statements.php - 我认为您被返回的错误条件绊倒了,但我强烈鼓励理解才是真正的答案。

标签: php mysql database sql-insert


【解决方案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);

【讨论】:

  • 那么,我可以用这个吗? mixed mysqli_fetch_row ( mysqli_result $result )
  • 只是为了澄清 mysqli_query() 返回一个对象。 mysqli_fetch_row() '获取结果行作为枚举数组'。您尝试插入的数据位于数组的元素中,因此,循环数组,将值分配给变量并使用 $sql2 将这些变量插入到您的数据库中。有更有效的方法可以做到这一点,但编辑你的方法是你需要做的。
  • 对不起,但我仍然对此感到困惑。那么,您能否更新您的答案并直接回答我的问题?然后,从您的代码中进行解释。也许,我可以这样理解更多。谢谢
  • 您的代码没有错误,但输入的数据仍然没有存入数据库
  • 使用 var_dump($result);和 var_dump($row);查看这些值中的内容。看来您可能没有来自 $sql 的任何结果。
【解决方案2】:

您应该使用连接查询来获取 nrp、kode_kelas 值。如果您完美地获得了这些值,那么您可以简单地插入知道。有什么问题可以问我。

【讨论】:

  • 你能给出更具体的答案吗?或许你可以直接回答我的问题?
  • 我在下一个答案中回答了
【解决方案3】:

首先您可以从 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 值。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多