2010-08-10 66 views
1

好吧,我有这个功能。它应该做什么来寻找在SQL中的PID和如果发现跳过功能,继续前进,但我不认为我的话是否正确。如果声明不起作用

function getblogpost(div) {  
    var date = $(div).find('.time').text(); 
    var user = $(div).find('.user').text(); 
    var title = $(div).find('.title').text(); 
    var textbody = $(div).find('.bodytext').text(); 
    var postid = $(div).find('.pid').text(); 

    var q = tx.executeSql("SELECT * FROM blogpost WHERE postid=" + postid, 
          [], function(transaction, result) { 
          var sqlpostid = result.rows.item(i)['postid']; 
      }, null); 
    if(result == NULL) { 
     return; 
    } 
    else { 
    dbsql.transaction(
    function(transaction) { 
     transaction.executeSql(
     'INSERT INTO blogpost (postid, date, user, title, textbody) 
        VALUES (?, ?, ?, ?, ?);', 
     [postid, date, user, title, textbody], 
     function() { }, 
     errorHandler 
     ); 
    } 
    ); 

    return false; 
    } 
} 

这是行不通的?

感谢

编辑: 这个怎么样。

function getblogpost(div) { 
    var postid = $(div).find('.pid').text(); 
    var q = tx.executeSql("SELECT * FROM blogpost WHERE postid=" + postid, [], function(transaction)); 
    if(!q) { 
     return false; 
    } 

    var date = $(div).find('.time').text(); 
    var user = $(div).find('.user').text(); 
    var title = $(div).find('.title').text(); 
    var textbody = $(div).find('.bodytext').text(); 

     dbsql.transaction(
      function(transaction) { 
       transaction.executeSql(
       'INSERT INTO blogpost (postid, date, user, title, textbody) VALUES (?, ?, ?, ?, ?);', 
       [postid, date, user, title, textbody], 
       function() { }, 
       errorHandler 
       ); 
      } 
     );  
    return false;  
} 

我在这里要做的是找出postid是否在数据库中,如果是这样,跳过该函数并返回。

+2

你用jQuery构建SQL?在执行之前,什么样的卫生条件会通过?或者更新本地存储或什么? – alex 2010-08-10 06:16:12

+0

@alex有什么不对吗? – Reigel 2010-08-10 06:19:18

+0

@alex:http://dev.w3.org/html5/webdatabase/ – jAndy 2010-08-10 06:21:58

回答

2

那么你需要定义像

var NULL = null; 

不这样做,NULL在ECMA-/ JavaScript的不确定NULL地方。

无论如何,你为什么要这样做? executeSql()需要两个Callbacks作为参数。第二个是error case,这可能更好。

t.executeSql('SELECT Foobar FROM blogpost', [], function (t, r) { 
    // r.rows[1].Something 
}, function (t, e) { 
    console.log(e.message); 
});  

例如,

+0

谢谢,jAndy,现在我可以删除我的答案。 +1。 – paxdiablo 2010-08-10 08:27:39