插入不在MYSQL中

时间:2012-07-28 23:33:02

标签: php mysql ajax

尝试使用jquery函数编写新记录。

$.post("insertuser.php",$("#rohanStart").serialize(),function(data){ 
    alert(data);
});

这似乎有效,我确实得到了回声的statmenet警报。问题是值没有写入数据库。查询声明中有什么问题吗?

mysql_query("INSERT INTO ajax_demo1( FirstName,LastName,Unit,Group,photo)
        VALUES (
            '".$arr['FirstName']."',
            '".$arr['LastName']."',
            '".$arr['Unit']."',
            '".$arr['Group']."',
            '".$arr['photo']."'
        )");

echo $arr['Group'];

1 个答案:

答案 0 :(得分:1)

首先不要使用jQuery或任何框架,它们依赖于专有的Microsoft JScript innerHTML方法,该方法无法与DOM一起正常工作,从而在脚本中增加了大量的歧义。

其次,你没有正确地转发进入数据库的数据,这是一个严重的安全问题。

第三,你的数据库查询方法不是将错误处理纳入帐户,你只是直接转储查询并希望最好。

您应该始终对您的查询进行编号并将其包含在下面。请注意,除了错误之外,最好先将条件失败,但是对于数据库结构,如果先成功则应该执行,然后然后无法增加缩进(通过单个空格,而不是这个选项卡浪费你有五个屏幕来水平滚动)所以您可以在自己的代码中看到自己的位置。

$query1 = "SELECT * FROM table_name WHERE something='value'";
$result1 = mysql_query($query1);

if ($result1)
{
 $row1 = mysql_fetch_assoc($result1);
}
else {mysql_error_report($query1,mysql_error(),__FUNCTION__);}

如果您的主标题包含(除了AJAX之外,您的所有请求都包含主标题吗?)您应该使用通用的MySQL错误处理函数来记录SQL错误。

以下是通用数据库错误处理程序。您应该有HTTP,JavaScript,PHP和SQL错误的管理错误日志,这样您就可以查看并更正访问者遇到的问题,而不是只会给您带来不便。

function mysql_error_report($q,$e,$f)
{
 if (isset($_SESSION['database']))
 {
  if (isset($_SESSION['id_member'])) {$id = $_SESSION['id_member'];} else {$id = 0;}
  if (isset($_SESSION)) {$session = mysql_real_escape_string(session_id());} else {$session = 0;}
  $ip = mysql_real_escape_string(getenv('REMOTE_ADDR'));

  $query = mysql_real_escape_string($q);
  $error = mysql_real_escape_string($e);
  $function = mysql_real_escape_string($f);
  if (isset($_SESSION['type'])) {$type = mysql_real_escape_string($_SESSION['type']);} else if (isset($_SESSION['cms_browser'])) {$type = 'Browser';} else {$type = 'Unknown';}
  if (isset($_SERVER['REQUEST_URI'])) {$url = $_SERVER['REQUEST_URI'];} else {$url = '';}
  if (isset($_SERVER['HTTP_USER_AGENT'])) {$ua = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);} else {$ua = '';}

  $query1 = "INSERT INTO log_errors_sql (id_session, type, id_user, date, ip, function, mysql_error, mysql_query, url, user_agent) VALUES ('$session', '$type', '$id', NOW(), INET_ATON('$ip'), '$function', '$error', '$query', '$url', '$ua')";
  $result1 = mysql_query($query1);

  if (!$result1) {mysql_error_report_mail($q,$e,$f,$ua);}
 }
 else {mysql_error_report_mail($q,$e,$f);}
}

通过使用这种方法,您可以加强编码实践,使其更加严格。你不想要模棱两可,你想要对你的代码完全紧张,因为编码中的主观性越少,你的代码就越能处理。

你的白色空间也很松散。

此...

INSERT INTO ajax_demo1( FirstName,LastName,Unit,Group,photo)

应格式化为......

INSERT INTO ajax_demo1(FirstName, LastName, Unit, Group, photo)

你可能会问为什么保持这样的白色空间很重要,如果你没有花费大量的时间来查找和替换(查找“高级查找和替换”,它适用于wine / Linux和blows从本机Linux控制台命令性能明智的废话,它是便宜的,支持正则表达式等)你会发现自己在眨眼间进行大规模的网站范围编辑,因为即使你的白色空间是统一的严格方法

如果您注意我的建议,请使用AFR(高级查找和替换)来搜索(但不替换)“mysql_query”的所有实例,并更正您编写的所有内容的格式。混合一些小的AJAX通知,您可以在没有单个alt-tab的情况下在浏览器中立即看到错误。这就是我滚动的方式。

...当然,这样做会使您的调试变得更加容易。这不是鱼,这是钓鱼,我希望它有所帮助。