database.inc.php中的通用添加记录功能
public function insert($data, $table) {
$columns = "";
$values = "";
foreach ($data as $column =>$value) {
$columns .= ($columns == "") ? "" : ", ";
$columns .= $column;
$values .= ($values == "") ? "" : ", ";
$values .= $value;
}
$sql = "insert into $table ($columns) values ($values)";
mysql_query($sql) or die(mysql_error());
//return the ID of the user in the database.
return mysql_insert_id();
}
添加类别的方法:
<?php
include './database.inc.php';
class Categories{
public function AddCategory(){
$db = new Database();
$b->connect();
$db->insert($data, $table);
}
}
?>
在insert方法中,$ data是$ _POST数组。这个函数工作正常,但我想传递$ _POST数组不是通过PHP而是通过ajax jquery。 我将在jquery中找到如何获取post数组,但我的问题是如何在类类中对这个特定的insert方法进行ajax调用,因为类别类中会有更多方法,如delete,update等等... 我听说在asp.net中有一个选项,它们传递页面名称以及jquery ajax的URL:参数中的方法名称。
更新: 这就是我调用方法的方法: page:categories.php class:categories.inc.php;
<?php
if (isset($_POST['submit'])) {
unset($_POST['submit']);
$_POST['DateAdded'];
$_POST['DateAdded']=date("Y-m-d");
// print_r($_POST);
$Connection = new Database();
$Connection->Connect();
$Category = new Categories();
$Category->AddCategory($_POST,"categories");
}
?>
答案 0 :(得分:0)
你可以设置一个名为“method”的POST,你可以在其中插入“插入”,“更新”等等,这样你就可以在php文件中进行切换。
您需要通过ajax发送您要使用的方法吗?好的,所以发送POST一个叫做方法的参数。
在php中你应该做这样的事情:
$method = $_POST['metod'];
if ($method == 'insert'){
//execute insert
} else if ($method == 'update'){
// execute update
} //... etc
答案 1 :(得分:0)
我强烈反对您使用这种处理数据的方式。您非常容易受到SQL注入攻击。看看这些链接:
你可以通过使用mysql_real_escape_string()函数来防止这种情况 - 如果你知道你在做什么 -
$safeData = mysql_real_escape_string($unsafeData);
您的JSON可以由PHP的json_encode()解析。
$jsonArray = json_encode($jsonString);
这个功能非常严格,不要在你的JSON代码中出错!对于AJAX异步请求,您应该使用jQuery.ajax并将async键设置为true。应在URL后面添加GET(url)参数:
$.ajax({
async: true,
url: "script.php?page=bla&method=blabla",
type: "POST",
data: { <object to be sent via JSON here> }
});
答案 2 :(得分:0)
$(functiopn(){
$('form#myForm').on('submit', function(e){
e.preventDefault();
var postData = $(this).serialize();
$.post('categories.php', postData, function(data){
// the server response will be available in "data" variable
});
});
});
此处,myForm
用作表单的id
,因此请在表单中使用此id=myForm
,如果您有,请使用myForm
代替var postData = $(this).serialize();
更新:如果您需要传递另一个参数,那么您可以在跟随行var postData = $(this).serialize()+"&method=insert"; // or "&method=update"
后立即添加另一个参数,例如
method
现在,每个表单字段(包括array and you can access any
)都可以在$ _POST variable just like you do in
$ _ POST from your
php file because the form has been submitted to this
categories.php {{1}} script`中找到。