DW插入代码的说明

时间:2012-06-13 15:39:21

标签: php insert dreamweaver

大家好,请各位帮我分解这个Dreamweaver插入代码向导,尤其是代码的if (!function_exists("GetSQLValueString")) { ....}部分:

<?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']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form")) {
  $insertSQL = sprintf("INSERT INTO feedback (name, email, phone, service, message) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['name'], "text"),
                       GetSQLValueString($_POST['email'], "text"),
                       GetSQLValueString($_POST['phone'], "text"),
                       GetSQLValueString($_POST['service'], "text"),
                       GetSQLValueString($_POST['message'], "text"));

  mysql_select_db($database_kojexconsult, $kojexconsult);
  $Result1 = mysql_query($insertSQL, $kojexconsult) or die(mysql_error());

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

1 个答案:

答案 0 :(得分:1)

我会看看能不能为你分解。

初始if检查函数是否尚未定义(http://php.net/manual/en/function.function-exists.php)。然后它通过并定义函数GetSQLValueString。

函数GetSQLValueString执行以下操作:

  • 如果使用get_magic_quotes_gpc进行检查,则执行三元组(获取magic_quotes_gpc的当前配置设置)。如果它通过,它会条纹$ theValue,否则它只返回$ theValue。
  • 另一个三元组,如果在执行mysql_real_escape_string或mysql_escape_string之前检查是否存在“mysql_real_escape_string”。
  • 选择与$ theType变量匹配的大小写,并将$ theValue设置为适当的值。
  • 最后,它返回Value,因此它可以用于代码中提供的任何目的。

其余的代码是非常简单的db insert snippet。

$ editFormAction是从php运行的任何脚本设置的,例如insert.php。如果检查以确认存在查询字符串。如果有一个查询字符串,它会附加到$ editForm Action的末尾。使用上面的PHP_SELF,这可能是insert.php?name = Tim&amp; email=hello@world.com& phone = 8675309。

下一部分是将信息插入数据库的神奇之处。

在继续数据库插入之前,检查是否设置了MM_insert并且它的值是否为form。这基本上是一种健全性检查。在那之后,它为变量$ insertSQL提供了来自格式化字符串的值以及从表单传递的信息。您将看到它使用之前的GetSQLValueString函数来确保数据准备好进入数据库。一旦$ insertSQL拥有它的所有值,它就会选择DB然后执行查询。

之后,success.php设置为$ insertGoTo。 if检查以查看QUERY_STRING是否已传递到此页面。如果有QUERY_STRING,它会将其附加到success.php(success.php?name = Tim&amp; email=hello@world.com& phone = 8675309)。在if检查之后,它通过调用header重定向页面。

我希望这些信息可以帮助您了解脚本的细分。

-----个人注意-----

Dreamweaver不是开发PHP代码的绝佳应用程序。如果你想要一个很棒的IDE用于PHP,我推荐使用PHPStorm(http://www.jetbrains.com/phpstorm/)。我已经使用它超过两年了,并且喜欢它。我将它与一个出色的文本编辑器SublimeText2(http://www.sublimetext.com/2)相结合。