如何使用backbone.js与php将数据保存到mysql数据库中

时间:2012-04-15 06:54:57

标签: php mysql backbone.js

我刚刚开始使用backbone.js,我正在使用Nettuts上的这个教程。 http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-backbone-js/

var user = Backbone.Model.extend({
   initialize: function(){
     console.log('user was initialized!');
   },
   defaults:{
      'name' : 'wern',
      'full_name' : 'rem falkner',
      'password' : 'secret',
      'email' : 'secret@gmail.com'
   }
})

var u = new user()

然后我使用了save方法:

u.save(undefined, {url : 'inserts.php'})

Inserts.php包含:

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

$name = $_POST['name'];
$password = md5($_POST['password']);
$email = $_POST['email'];

$db->query("INSERT INTO tbl_users SET user_id='$name', pword_hash='$password', full_name='$name', email='$email'");
?>

我的代码出了什么问题?它似乎是在数据库中插入的,因为无论何时我调用save()方法,它都会在用户表上插入一些内容,但只能在密码字段中插入。

2 个答案:

答案 0 :(得分:7)

当您调用.save()方法时,会将JSON对象发送到您指定的URL;如果模型是新的,将使用POST方法。当在PHP脚本中收到JSON时,您必须解码它并保存模型属性,让我们说每个属性一个字段。在'inserts.php'中更改此内容:

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

    $data = json_decode(file_get_contents('php://input'));
    $name = $data->{'name'};
    $password = md5($data->{'password'});
    $email = $data->{'email'};

    //proceed to add every variable to a field in the database
    //...

答案 1 :(得分:0)

在$ db-&gt;查询之前的行中的PHP代码中,执行以下操作:

echo $name, '<br>', $password, '<br>', $email;

创建一个带有名称密码电子邮件字段的传统HTML表单,并测试PHP脚本,确保您输入的名称密码和电子邮件地址显示在屏幕上。

如果成功,您的错误可能在您的数据库查询中。对于初学者来说,您的代码看起来很容易受到SQL注入攻击。您需要发布一些有关您正在使用的DBMS的信息(MySQL,MSSQL,PostgreSQL等)。无论如何,查询看起来不对。同时发布您的CREATE TABLE命令。