我的插入和更新页面(通过我的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);
?>
答案 0 :(得分:1)
“它保持在同一页面而不添加或更新任何东西”是非常常见的问题,可能由数千个错误引起。现在可以通过找到“有同样问题的人”来解决它。
如果您只是此代码的用户,那么聘请程序员会更好。
如果您自己应该是程序员,则必须学习如何debug
您的应用程序。调试代表查找错误的位置。虽然调试只有在你知道代码的作用时才有用。无论如何你都可以试试。
有很多事情要做。您必须确保可以看到所有可能的错误。 您可以从this useful article
开始答案 1 :(得分:0)
我发现代码上有很多if(isset($variable))
。如果isset($_POST['MM_insert'])
返回false会发生什么?放一些错误陷阱(一个简单的回声告诉你没有设置变量),看看代码在哪里停止工作,然后你会看到它停止工作的原因。
另外,尝试在可能存在问题的变量上使用print_r()
,看看你是否得到了你所期望的。
PS:我只使用一个数据库选择。我认为在这种情况下不需要多次执行此操作,除非您明确需要并且想要使用不同的数据库。