0

我想问..我怎样才能将更新数据的ID插入到不同的表中?..

这是我制作的代码,我正在使用 $inserted_id= mysql_inserted_id() 但它不起作用.. id 仍然没有插入“updatetrail”表中,希望你能帮助我 =):

    <?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

$count=0;

if ((isset($_POST["MM_update"]))) {
foreach ($_FILES['file']['name'] as $certificate) {

$allowedExts = array("gif", "jpeg", "jpg", "png", "txt", "pdf");
  if ($_FILES['file']['error'][$count]!=4 && $_FILES["file"]["error"][$count] > 0)
    {
        echo "Return Code: " . $_FILES["file"]["error"][$count] . "<br>";
    }
  else
    {
  if ($_FILES['file']['error'][$count]!=4) {
    if (file_exists("documents/" . $_FILES["file"]["name"][$count]))
          {
          print '<script type="text/javascript">'; 
          print 'alert("The certificate '. $_FILES["file"]["name"][$count].' is already exists, try rename the file and try again. =) ")';      print '</script>';

        echo "<script language=\"JavaScript\">{                                                                                         
        location.href=\"update(power).php\";                                                                                               
        }</script>";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"][$count],
          "documents/" . $_FILES["file"]["name"][$count]);
          }

        $file=fopen("documents/". $_FILES["file"]["name"][$count],"r") or exit("Unable to open file!");

        $j=0;
        while(!feof($file))
        {

        $thetoken[$j]=fgets($file, 40);
        $j++;

        }
    }

  $updateSQL = sprintf("UPDATE department SET d_name=%s, d_staff_name=%s, d_position=%s, d_noic_nopassport=%s, d_type_training=%s, d_date_training=%s, d_date_expired=%s, d_sijil=%s WHERE d_no=%s",
                       GetSQLValueString($_POST['d_name'], "text"),
                       GetSQLValueString($_POST['d_staff_name'], "text"),
                       GetSQLValueString($_POST['d_position'], "text"),
                       GetSQLValueString($_POST['d_noic_nopassport'], "int"),
                       GetSQLValueString($_POST['d_type_training'], "text"),
                       GetSQLValueString($_POST['d_date_training'], "text"),
                       GetSQLValueString($_POST['d_date_expired'], "date"),
                       GetSQLValueString(addslashes($_FILES['file']['name'][$count]), "text"),
                       GetSQLValueString($_POST['departmentID'], "int"));

 mysql_select_db($database_dbconn, $dbconn);
$Result1 = mysql_query($updateSQL, $dbconn) or die(mysql_error());      

$inserted_id=$_POST['departmentID'];                       
$inserted_id = mysql_insert_id();

$sql2 = mysql_query("INSERT INTO updatetrail (d_no,d_name, d_position, d_staff_name, d_noic_nopassport, d_type_training, d_date_training, d_date_expired, d_sijil)
VALUES
($inserted_id,'$_POST[d_name]','$_POST[d_position]','$_POST[d_staff_name]','$_POST[d_noic_nopassport]','$_POST[d_type_training]','$_POST[d_date_training]','$_POST[d_date_expired]','".addslashes($_FILES['file']['name'][$count])."')") or die("Error: " . mysql_error());

insertAuditTrail(date('Y-m-d H:i:s'),"Module:Update User Details" ,"User Details successfully edited",$_SESSION['userID'],$inserted_id); 
  $Result1 = mysql_query($updateSQL, $dbconn) or die(mysql_error());

    $count=$count + 1;


    }   
      echo "<script language=\"JavaScript\">{                                                                                         
    location.href=\"update(power).php\";                                                                                               
    }</script>";
    if (isset($_SERVER['QUERY_STRING'])) {
   $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
   header(sprintf("Location: %s", $updateGoTo));    
}
4

1 回答 1

0

您确实知道您的代码存在无法形容的巨大安全漏洞,对吗?另外,您正在使用已弃用的功能

但是暂时不考虑这些,您的查询将使用内置的 MySQL 函数工作,该函数LAST_INSERT_ID()可以直接进入您的查询,并且将由服务器解释,而无需您获取它:

$sql2 = mysql_query("INSERT INTO updatetrail (d_no,d_name, d_position, ...
VALUES (LAST_INSERT_ID(),'$_POST[d_name]', ...

实际上...嗯,等等...在您的代码中...您实际上并没有在此之前进行插入。当您没有进行插入时 mysql_insert_id(),php 中没有或可用。LAST_INSERT_ID()

如果您想要在先前查询中更新SELECT(未插入)的行中的 id,则必须使用它。

于 2013-11-07T02:48:36.513 回答