将数据插入mysql

时间:2010-04-10 09:03:46

标签: mysql insert

我的插入和更新页面(通过我的admin forlder)进入mysql停止工作。当我尝试插入/更新详细信息时,它会保留在同一页面上,而不会在数据库表中添加或更新任何内容。

我真的不知道发生了什么,也不知道从哪里开始看。我没有对页面做任何改动。

有没有人遇到同样的问题,可以给我一些线索?

赞赏 弗朗西斯

插入一些代码,如果它可以提供帮助:

    <?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $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']);
}

if(isset($_POST['username'])) {
mysql_select_db($database_satsconn, $satsconn);
$query_rstUname = "SELECT members_ID FROM members WHERE username = '$_POST[username]'";
$rstUname = mysql_query($query_rstUname, $satsconn) or die(mysql_error());
$row_rstUname = mysql_fetch_assoc($rstUname);
$totalRows_rstUname = mysql_num_rows($rstUname);
if($totalRows_rstUname > 0){
$error['uname'] = 'That username is already in use. Please choose another.';
    }
}

if(isset($_POST['pwd']) && isset($_POST['pwd'])) {
 if($_POST['pwd'] != $_POST['con_pwd']) {
   $error['pwd'] = 'Your passwords don\'t match.';
   }
  else {
  $_POST['pwd'] =md5($_POST['pwd']);
  }
}

if(!isset($error)) {
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "addUser")) {
  $insertSQL = sprintf("INSERT INTO members (realname, username, pwd) VALUES (%s, %s, %s)",
                       GetSQLValueString($_POST['realname'], "text"),
                       GetSQLValueString($_POST['username'], "text"),
                       GetSQLValueString($_POST['pwd'], "text"));

  mysql_select_db($database_satsconn, $satsconn);
  $Result1 = mysql_query($insertSQL, $satsconn) or die(mysql_error());
   }
}

if ((isset($_POST['members_ID'])) && ($_POST['members_ID'] != "")) {
  $deleteSQL = sprintf("DELETE FROM members WHERE members_ID=%s",
                       GetSQLValueString($_POST['members_ID'], "int"));

  mysql_select_db($database_satsconn, $satsconn);
  $Result1 = mysql_query($deleteSQL, $satsconn) or die(mysql_error());

  $deleteGoTo = "add_member.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
}

mysql_select_db($database_satsconn, $satsconn);
$query_rstAdmin = "SELECT * FROM members ORDER BY realname ASC";
$rstAdmin = mysql_query($query_rstAdmin, $satsconn) or die(mysql_error());
$row_rstAdmin = mysql_fetch_assoc($rstAdmin);
$totalRows_rstAdmin = mysql_num_rows($rstAdmin);
?>

2 个答案:

答案 0 :(得分:1)

“它保持在同一页面而不添加或更新任何东西”是非常常见的问题,可能由数千个错误引起。现在可以通过找到“有同样问题的人”来解决它。

如果您只是此代码的用户,那么聘请程序员会更好。

如果您自己应该是​​程序员,则必须学习如何debug您的应用程序。调试代表查找错误的位置。虽然调试只有在你知道代码的作用时才有用。无论如何你都可以试试。

有很多事情要做。您必须确保可以看到所有可能的错误。 您可以从this useful article

开始

答案 1 :(得分:0)

我发现代码上有很多if(isset($variable))。如果isset($_POST['MM_insert'])返回false会发生什么?放一些错误陷阱(一个简单的回声告诉你没有设置变量),看看代码在哪里停止工作,然后你会看到它停止工作的原因。 另外,尝试在可能存在问题的变量上使用print_r(),看看你是否得到了你所期望的。 PS:我只使用一个数据库选择。我认为在这种情况下不需要多次执行此操作,除非您明确需要并且想要使用不同的数据库。