0

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);
    }
}
?>

在插入方法中,$data 是 $_POST 数组。这个函数工作正常,但我想通过 ajax jquery 而不是通过 php 传递 $_POST 数组。我将了解如何在 jquery 中获取 post 数组,但我的问题是如何在类别类中对这个特定的插入方法进行 ajax 调用,因为类别类中会有更多方法,如删除、更新等...我听说在 asp.net 中有一个选项,他们传递页面名称以及 URL 中的方法名称:jquery ajax 的参数。

更新:这就是我调用方法的方式:页面:categories.php 类: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");
        }
        ?>
4

3 回答 3

0

您可以设置一个名为“方法”的 POST,在其中放置“插入”、“更新”等,以便在 php 文件中进行切换。

你需要通过ajax发送你要使用的方法吗?好的,所以发送 throw POST 一个称为方法的参数。

在 php 中,您应该执行以下操作:

$method = $_POST['metod'];
if ($method == 'insert'){
    //execute insert
} else if ($method == 'update'){
    // execute update
} //... etc
于 2013-09-29T04:13:52.723 回答
0

我强烈不鼓励您使用这种处理数据的方式。你很容易受到 SQL 注入的攻击。看看这些链接:

维基百科 - SQL 注入

SQL 注入示例

你可以通过使用 mysql_real_escape_string() 函数来防止这种情况 - 如果你知道你在做什么 - 这。

$safeData = mysql_real_escape_string($unsafeData);

你的 JSON 可以被 PHP 的 json_encode() 解析。

$jsonArray = json_encode($jsonString);

这个函数非常严格,不要在你的 JSON 代码中出错!对于 AJAX 异步请求,您应该使用jQuery.ajax并将异步键设置为 true。GET(url) 参数应该加在 URL 后面:

$.ajax({
    async: true,
    url: "script.php?page=bla&method=blabla",
    type: "POST",
    data: { <object to be sent via JSON here> }
});
于 2013-09-29T04:20:53.417 回答
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)都可以在 $_POST array and you can access any$_POST variable just like you do inphp from yourcategories.php脚本中使用file because the form has been submitted to this

于 2013-09-29T04:25:18.907 回答