从 PHP (jQuery/AJAX) 插入 MySQL

Posted

技术标签:

【中文标题】从 PHP (jQuery/AJAX) 插入 MySQL【英文标题】:Inserting into MySQL from PHP (jQuery/AJAX) 【发布时间】:2011-07-05 19:38:02 【问题描述】:

我看过很多教程,但它们太混乱了,为了做我想做的事,我只是不知道如何使用这些教程中的现有内容并让它们按照我想要的方式工作。

我有一个非常简单的表单,包含一个文本框、标签和一个提交按钮。当用户在表单中输入内容,然后点击提交时,我想使用 php 和 ajax (with jquery) 将表单的结果插入到 mysql 数据库中。

有人可以告诉我这是如何实现的吗?我只需要一些非常基本的东西就可以开始了。任何帮助表示赞赏。

谢谢

【问题讨论】:

就 PHP 而言,通过 AJAX 提交的数据与通过常规表单提交的数据没有区别。这只是一个 GET/POST 调用。 @Lucifer 记住 ajax 跨域有点复杂 感谢@Marc B,这真的很有帮助。 谢谢@kjy112,我会记住的。 【参考方案1】:

您好,这里只是一个简单的示例,说明如何做到这一点:

html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>Quick JQuery Ajax Request</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <!-- include the jquery lib -->
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
            var ajaxSubmit = function(formEl) 
                // fetch where we want to submit the form to
                var url = $(formEl).attr('action');

                // fetch the data for the form
                var data = $(formEl).serializeArray();

                // setup the ajax request
                $.ajax(
                    url: url,
                    data: data,
                    dataType: 'json',
                    success: function() 
                        if(rsp.success) 
                            alert('form has been posted successfully');
                        
                    
                );

                // return false so the form does not actually
                // submit to the page
                return false;
            
        </script>

    </head>
    <body>

        <form method="post" action="process.php"
              onSubmit="return ajaxSubmit(this);">
            Value: <input type="text" name="my_value" />
            <input type="submit" name="form_submit" value="Go" />
        </form>

    </body>
</html>

process.php 脚本:

<?php

function post($key) 
    if (isset($_POST[$key]))
        return $_POST[$key];
    return false;


// setup the database connect
$cxn = mysql_connect('localhost', 'username_goes_here', 'password_goes_here');
if (!$cxn)
    exit;
mysql_select_db('your_database_name', $cxn);

// check if we can get hold of the form field
if (!post('my_value'))
    exit;

// let make sure we escape the data
$val = mysql_real_escape_string(post('my_value'), $cxn);

// lets setup our insert query
$sql = sprintf("INSERT INTO %s (column_name_goes_here) VALUES '%s';",
                'table_name_goes_here',
                $val
);

// lets run our query
$result = mysql_query($sql, $cxn);

// setup our response "object"
$resp = new stdClass();
$resp->success = false;
if($result) 
    $resp->success = true;


print json_encode($resp);
?>

请注意,这些都没有经过测试。希望对你有帮助。

【讨论】:

哇!谢谢大家,@ZeSimon。 :)【参考方案2】:

jQuery 部分通常非常简单。它只是将普通表单 action= 重定向到 Javascript 处理程序。 $.post 使用方便,只需.serialize() 将现有的表单值打包成一个字符串:

<form id="example">
<input name="textbox" ...>
<input type=submit name="submitbuttonname" value="submit"
   onClick="$.post('save.php', $('form#example').serialize())">

而在 PHP 端,您只需通过$_POST 接收内容并将其保存到数据库中(也可以使用旧的 mysql_ 函数,只是比较麻烦):

$db = new PDO("mysql:...");

if ($_POST["submitbuttonname"]) 

   $q = $db->prepare("INSERT INTO save (textbox, label) VALUES (?, ?)";
   $q->execute(array($_POST["textbox"], $_POST["label"]));

【讨论】:

你是认真的吗?这就像插入正常方式一样容易。谢谢! :-D @Lucifier:是的。 jQuery 将其转换为普通的 POST 请求。这就是为什么每个人都喜欢它。 @Lucifier 我相信 PDO 支持 >= php 5.1.0 确保您的服务器支持它。 @kjy112:它从 5.0 开始作为 PECL 模块提供,并且还有一个用于 PHP4(和 PHP5.0)的 PDO 仿真。请参阅xpdo.org 或 upgradephp 这很酷,我刚刚使用了我在另一个页面上已经拥有的 mysql 东西 ;) :)

以上是关于从 PHP (jQuery/AJAX) 插入 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php jquery ajax 上传文件和插入数据

使用 jQuery (ajax) 和 PHP 插入我的数据库

无法使用 Php 和 jquery ajax 在 mysql 中插入 FormData

无法使用 PHP 和 JQuery Ajax 将新记录插入 mysql db

如何防止 PHP PDO 通过 jQuery AJAX 插入 MySQL varchar 中的转义字符

使用游戏手柄触发 jquery ajax mysql 插入