【发布时间】:2014-02-13 13:56:09
【问题描述】:
我有如下的建议.php 表单并调用 ajax 方法。我总是收到“谢谢”提醒,但发布数据从未插入数据库。我很确定我的连接字符串是正确的,因为它有时会插入记录,但大多数时候没有插入。
请帮忙。 问候, 亚历克斯
建议.php
<form class="suggestion" role="form" method="POST" action="suggestion_add.php">
<div class="form-group"><label name="warnning" id="urlwarnning">Currently we only support YouTube as well as Vimeo videos</label></div>
<div class="form-group"><input name="url" id="url" type="text" class="form-control" placeholder="URL" required></div>
<div class="form-group"><input name="title" id="title" type="text" class="form-control" placeholder="Title" required></div>
<div class="form-group"><textarea id="desc" name="desc" class="form-control" rows="5" placeholder="Description.." required></textarea></div>
<div class="form-group"><input name="name" id="name" type="text" class="form-control" placeholder="Name" required></div>
<div class="form-group"><input name="email" id="email" type="text" class="form-control" placeholder="Email ID" required></div>
<button class="btn btn-lg btn-primary btn-block" type="submit">SUBMIT</button>
</form>
功能
$(function () {
$(document).on('submit', ".suggestion", function(e) {
var name=$("#name").val();
var email=$("#email").val();
var url=$("#url").val();
var title=$("#title").val();
var desc=$("#desc").val();
var formURL = $(this).attr("action");
var youtube_regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
var vimeo_regExp = /https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)/;
var match = url.match(youtube_regExp);
if (match&&match[2].length==11){
var vid = match[2];
var src = "youtube";
var check = 1;
}else{
var match = url.match(vimeo_regExp);
if (match){
var vid = match[3];
var src = "vimeo";
var check = 1;
}else{
alert("not a valid url");
var check = 0;
}
}
if(check == 1){
var data="title="+title+"&desc="+desc+"&src="+src+"&vid="+vid+"&name="+name+"&email="+email;
$.ajax(
{
url : "suggestion_add.php",
type: "POST",
data : data,
success:function(data, textStatus, jqXHR)
{
$("#name").val("");
$("#email").val("");
$("#url").val("");
$("#title").val("");
$("#desc").val("");
alert("Thank you !");
},
error: function(jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});
}else{
alert("Check again!");
}
e.preventDefault();
});
});
suggestion_add.php
<?php
include("config.php");
$con=mysql_connect($db_host,$db_uname,$db_pwd,$db_name);
mysql_select_db($db_name);
$src=$_POST['src'];
$name=$_POST['name'];
$email=$_POST['email'];
$title=$_POST['title'];
$desc=$_POST['desc'];
$vid=$_POST['vid'];
$query="INSERT INTO `suggestion` (`id`,`src`,`vid`,`title`,`desc`,`name`,`email`)VALUES (NULL,'$src','$vid','$title','$desc','$name','$email');";
$result=mysql_query($query);
?>
【问题讨论】:
-
您正在使用已弃用的 mysql_* 函数,您的代码容易受到 SQL 注入的攻击
-
只是几个建议:使用 PDO 防止 SQL 注入,您可以使用 jQuery 的 Serialize() 方法使提交表单数据更容易。
-
您好,感谢您的建议。我稍后会更改准备好的语句,但我不知道为什么我的代码没有插入记录。
-
你得到正确答案了吗?如果是,请将其标记为正确。否则,请随时对答案发表评论,以获得澄清和/或更多帮助。