尝试使用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'];
答案 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的情况下在浏览器中立即看到错误。这就是我滚动的方式。
...当然,这样做会使您的调试变得更加容易。这不是鱼,这是钓鱼,我希望它有所帮助。