2012-04-15 121 views
4

我剛剛開始使用backbone.js,我正在使用Nettuts上的這個教程。 http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-backbone-js/如何使用backbone.js和php將數據保存到mysql數據庫

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

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()方法,它都會在用戶表中插入某些內容,但僅在密碼字段中。

+0

您的插入查詢是錯誤的。您正在使用insert來執行更新查詢語法。 'INSERT INTO table(fields)VALUES(values)' – 2012-04-15 07:00:10

+0

這是一種替代語法:) – 2012-04-15 07:04:13

+0

嘗試echo $ name。你得到了什麼? – Anil 2012-04-15 07:10:51

回答

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 
    //... 
+0

這可行,但如果我想fetch()而不是save()。如何檢索來自fetch()請求的數據?任何幫助,將不勝感激。謝謝 – 2016-12-19 10:25:23

0

在該行的PHP代碼$ DB->查詢之前,這樣做:

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

請與名密碼電子郵件領域傳統的HTML表單,並測試PHP腳本,並確保該名您輸入的密碼和電子郵件地址會出現在屏幕上。

如果成功,您的錯誤可能在您的數據庫查詢中。對於初學者來說,它看起來像你的代碼容易受到SQL注入的影響。您需要發佈一些關於您正在使用的DBMS(MySQL,MSSQL,PostgreSQL等)的信息。無論如何,查詢看起來是錯誤的。同時發佈您的CREATE TABLE命令。

+0

我使用插入的替代語法。查詢沒有問題,我已經嘗試在控制檯上執行它。 – 2012-04-15 07:06:29

+0

如果你曾經困擾我閱讀我的答案,你會明白,我建議在查詢被執行之前調試腳本,以防數據未達到那個點... – fabspro 2012-04-29 07:16:44

相關問題