вставка данных в MySQL - PullRequest
       9

вставка данных в MySQL

0 голосов
/ 10 апреля 2010

Мои страницы вставки и обновления (через моего администратора) в mysql перестали работать. Когда я пытаюсь вставить / обновить данные, они остаются на той же странице без добавления или обновления чего-либо в таблицу базы данных.

Я действительно не знаю, что случилось, и не знаю, с чего начать. Я не вносил никаких изменений в страницы.

Есть ли кто-нибудь, кто имел такую ​​же проблему и может любезно дать мне подсказку?

Оценил Francesco

Вставка некоторого кода, если он может помочь:

    <?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 ]

1 голос
/ 10 апреля 2010

«он остается на той же странице без добавления или обновления чего-либо» - очень распространенная проблема, которая может быть вызвана тысячами ошибок. Теперь можно решить ее, найдя «любого, у кого была такая же проблема».

Если вы просто пользователь этого кода, лучше нанять программиста.

Если вы должны были быть программистом самостоятельно, вам нужно научиться debug вашему приложению. Отладка означает поиск ошибки. Хотя отладка может помочь, только если вы знаете, что делает ваш код. Вы все равно можете попробовать.

Есть много дел. Вы должны быть уверены, что видите все возможные ошибки. Вы можете начать с этой полезной статьи

0 голосов
/ 10 апреля 2010

Я вижу, что в коде много if(isset($variable)). Что произойдет, если isset($_POST['MM_insert']) вернет false? Поместите несколько ловушек с ошибками (простое эхо-сообщение о том, что переменная не установлена) поможет увидеть, где именно код перестал работать, и тогда вы поймете, почему он перестал работать. Также попробуйте использовать print_r() для возможной проблемной переменной, чтобы увидеть, получаете ли вы именно то, что ожидаете.
PS: я бы использовал только один выбор БД. Я думаю, что в этом случае нет необходимости делать это более одного раза, за исключением случаев, когда вам явно нужно и вы хотите использовать другую базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...