DW 插入代码的说明


explanation of DW insert code

嗨,你们能帮我分解这个 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));
}
?>

我会看看我是否可以为您分解它。

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

函数 GetSQLValueString 执行以下操作:

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

其余代码是非常简单的数据库插入片段。

$editFormAction是从 PHP 运行的任何脚本(如 insert.php)设置的。用于确认存在查询字符串的 if 检查。如果有查询字符串,它将追加到$editForm操作的末尾。 使用上述PHP_SELF,这可能是insert.php?name=Tim&email=hello@world.com&phone=8675309。

下一部分是将信息插入数据库的魔力。

if 检查是否

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

在那之后,成功.php为$insertGoTo奠定了基础。if 检查以查看QUERY_STRING是否已传递到此页面。如果有QUERY_STRING,它会将其附加到成功.php(成功.php?name=Tim&email=hello@world.com&phone=8675309)。if 检查后,它通过调用标头重定向页面。

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

-----个人笔记在这里-----

Dreamweaver 不是开发 PHP 代码的好应用程序。如果你想用一个伟大的IDE来做PHP,我推荐PHPStorm(http://www.jetbrains.com/phpstorm/)。我已经使用它两年多了,很喜欢它。我把它与一个很棒的文本编辑器SublimeText2(http://www.sublimetext.com/2)结合起来。