加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 将Backbone.js模型插入MySQL数据库

发布时间:2020-12-13 18:17:54 所属栏目:PHP教程 来源:网络整理
导读:我有一个带有一些默认值和url的backbone.js模型: var Box = Backbone.Model.extend({ url: "./save.php",defaults: { x: 0,y: 0,w: 1,h: 1 }}); 然后我有一个这个模型的实例,我继续保存它: var box = new Box({ x:10,y:10,w:200,h:200 });box.save(); 现在
我有一个带有一些默认值和url的backbone.js模型:
var Box = Backbone.Model.extend({
    url: "./save.php",defaults: {
        x: 0,y: 0,w: 1,h: 1
    }
});

然后我有一个这个模型的实例,我继续保存它:

var box = new Box({ x:10,y:10,w:200,h:200 });
box.save();

现在我想使用PHP脚本“save.php”将此模型保存到MySQL数据库中,它是这样的:

<?php 
    include('connection.php');

    $id = $_POST['cid'];
    $x = $_POST['x'];
    $y = $_POST['y'];
    $w = $_POST['w'];
    $h = $_POST['h'];

    mysql_query("INSERT INTO boxes (id,x,y,w,h)
                         VALUES('$id','$x','$y','$w','$h')
                       ") or die(mysql_error());
?>
echo "Data Inserted!";

我试过阅读很多教程,但是我无法将这个简单的模型保存到工作中.为什么我的代码不起作用?关于如何解决这个问题的任何想法?

谢谢

编辑:快速解决方案

在php脚本中,从发送的JSON对象获取信息的正确方法如下:

$box_data = json_decode(file_get_contents('php://input'));
$x = $box_data->{'x'};
$y = $box_data->{'y'};
$w = $box_data->{'w'};
$h = $box_data->{'h'};

并存储在数据库中:

mysql_query("INSERT INTO boxes(id,h)
            VALUES('','$h') ") 
or die(mysql_error());

以这种方式,将在表“框”中插入一行,其中包含骨干模型框的每个属性的信息.
在这种情况下,服务器请求方法是POST,表“boxes”中的id设置为自动递增.

Backbone基于REST API:在将模型保存/更新到服务器时,Backbone会在请求主体中将其序列化为JSON,并发送POST我们的PUT请求.从 Backbone.sync documentation起

With the default implementation,when Backbone.sync sends up a request
to save a model,its attributes will be passed,serialized as JSON,
and sent in the HTTP body with content-type application/json.

这意味着你必须要服务器端

>确定请求的类型
>解码序列化的JSON

这样的事情应该让你开始

$request_method = strtolower($_SERVER['REQUEST_METHOD']);
$data = null;

switch ($request_method) {
    case 'post':
    case 'put':
        $data = json_decode(file_get_contents('php://input'));
    break;
}

// print_r($data);

// note that mysql_* functions are deprecated
// http://php.net/manual/en/function.mysql-query.php
// inserting with a PDO object,assuming an auto incremented id
$sql = "INSERT INTO boxes (x,h) VALUES(?,?,?)";
$sth = $dbh->prepare($sql);
$sth->execute(array(
    $data->x,$data->y,$data->w,$data->h
));
$id = $dbh->lastInsertId();

查看此页面,以便在PHP http://www.gen-x-design.com/archives/create-a-rest-api-with-php/中更全面地实现REST API

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读