0

こんにちは、スタック オーバーフローに関する最初の質問です。webSQLとjavascriptを使用して、phonegapでアプリを開発しています。私のアプリには、ユーザー名とパスワードの 2 つの入力を受け取るログイン フォームがあります。ユーザーがこれらの値を入力して [ログイン] をクリックすると、複数の行を持つデータベース テーブルでこれらの値がチェックされます。値を確認するために、このクエリを使用しています-

var email=document.getElementById("uname").value;
tx.executeSql('SELECT * FROM USERINF Where Email=email', [], MatchPass, errorCB1);

ただし、クエリは、Java スクリプト変数を含む where 句では機能しません。私はまた、次のような多くのシンテックスを試しました

where Email=@email
where Email="+email+"

そしてもっとたくさんありますが、それらはすべて機能しませんでした。

where句でjavascript変数を使用することは可能ですか?? はいの場合、方法を教えてください。そうでない場合は、タスクを達成するための他の方法を提案してください。前もって感謝します。

これは私の完全なJavascriptCodeです

// JavaScript Document
var db=window.openDatabase("CakeViewer", "1.0", "Cake Viewer", 2*1024*1024);

function login()
{

db.transaction(matchcred)

function matchcred(tx)
{
    var eml=document.getElementById("uname").value;
     tx.executeSql('SELECT * FROM USERINF Where Email=eml', [], MatchPass, errorCB1); 
 //problem is in above line-- the query is not executed with variable where clause. But it works fine if I use where Email="abc@abc.com"

}


function MatchPass(tx, results)
{
    var orgnalPass=results.rows.item(0).Password;   
    var userinputedPass=document.getElementById("pass");

    if(orgnalPass==userinputedPass.value)
    {
        window.location.href='HomePage.html';
    }
    else
    {
        errorCB();
    }
}

function errorCB(tx,err)
{
    alert("User Name or Password is not valid !");
    document.getElementById("uname").value="";
    document.getElementById("pass").value="";
}

function errorCB1()
{
    alert("Query failed");
}

function errorCB2(tx,err)
{
    alert("errorCB2"+err);
}
}
4

3 に答える 3

10

最も簡単な方法は、疑問符 (?) を使用して変数を指定することです。

例えば:

tx.executeSql('SELECT Data from Table Where something = ?', [email], MatchPass, errorCB1);

? は左から右に解析され、[] の間の変数を左から右に一致させます。

もう一つの例:

tx.executeSql('SELECT Data from Table Where email = ? AND username=?', [email, username], MatchPass, errorCB1);
于 2012-09-05T06:53:48.707 に答える
0
tx.executeSql("SELECT * FROM USERINF Where Email='"+email+"'" , 
于 2012-08-03T06:21:22.437 に答える
-1

クエリでjs 変数emailの値を取得するには、+ 演算子を使用して連結する必要があります。また、値が文字列である可能性があるため、値を引用符で囲みます

tx.executeSql('SELECT Data from Table Where something = "'+ email+ '"', [], MatchPass, errorCB1);
于 2012-08-03T06:25:05.790 に答える