4

我刚刚开始使用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()

然后我使用了保存方法:

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() 方法时,它都会在用户表上插入一些东西,但只在密码字段中。

4

2 回答 2

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
    //...
于 2012-06-08T12:38:47.220 回答
0

在 $db->query 之前的行中的 PHP 代码中,执行以下操作:

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

制作一个带有姓名密码电子邮件字段的传统 HTML 表单,并测试 PHP 脚本,确保您输入的姓名密码和电子邮件地址出现在屏幕上。

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

于 2012-04-15T07:03:05.313 回答