两个不同的表php mysql之间的INSERT和UPDATE(+增加值)

时间:2015-10-13 07:45:17

标签: php mysql

tbl_A
[id | facility_section | assigned_no]
----------
tbl_B
[col1 | col2| issued_to | col3 | col_etc]
----------

下拉列表将检索facility_section表的tbl_A列的值。然后,下拉列表值将插入issued_to的{​​{1}}列。代码示例: -



tbl_B




我想要的是,每次将下拉列表值插入<?php include ('dbconnect.php'); @$i=$_POST['issued_to']; if(@$_POST['submit']) { $s="INSERT INTO tbl_B (issued_to) VALUES ('$i')"; mysql_query($s); } @$facility_section = $_POST['facility_section']; $result = mysql_query("SELECT facility_section FROM tbl_A"); ?> <select name="issued_to"> <option selected disabled>-- Please Select --</option> <?php while ($row = mysql_fetch_array($result)) { echo "<option value='" . $row['facility_section'] . "'>" . $row['facility_section'] . "</option>"; } ?> </select>的{​​{1}}列时,issued_to的{​​{1}}列都会更新并增加1会相应增加: - tbl_B = assigned_no

我知道要更新的代码: -

tbl_A

但是,我仍然坚持如何做到这一点......

1 个答案:

答案 0 :(得分:1)

  • $i的声明应该在if()条件中,否则会出现undefined variable错误消息。
  • @$facility_section = $_POST['facility_section'];的目的是什么?你在哪里用它?我认为它也应该在你的if()条件中。
  • 您很容易SQL Injection,因此在将变量(尤其是字符串)绑定到查询中时,您应该使用mysql_real_escape_string()
  • mysql_* API已弃用,您应该使用mysqli_* API。请在此处阅读prepared statement

您的代码至少应该如此(在if()条件内):

if(isset($_POST['submit'])){

  $i = mysql_real_escape_string($_POST["issued_to"]);

  $s="INSERT INTO tbl_B (issued_to) VALUES ('$i')";
  mysql_query($s);

  /* GET TOTAL OF tbl_B BASED FROM THE SELECTED facility_section */
  $res = mysql_query("SELECT * FROM tbl_B WHERE issued_to = '$i'");
  $totalrows = mysql_num_rows($res);

  /* UPDATE THE assigned_no COLUMN WITH THE UPDATED NUMBER OF ROWS */
  mysql_query("UPDATE tbl_A assigned_no = '$totalrows' WHERE facility_section='$i'");

} /* END OF ISSET */
相关问题