2012-06-27 4 views
3

사용자가 테이블에 데이터를 입력 한 다음 인쇄하지 못하는 것 같습니다. SQL 테이블에 변수 삽입

<!DOCTYPE HTML> 
<html> 
<head> 
<script type="text/javascript"> 
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); 
function submit() { 
     var input = document.getElementById("save_name").value; 
     localStorage.setItem("inputed_name", input); 
     var msg; 
     db.transaction(function (tx) 
     { 
      tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log varchar(50))'); 
      tx.executeSql('delete from LOGS'); // Clears table (for debugging) 

      tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, localStorage.inputed_name)'); 
      msg = '<p>Log message created and row inserted.</p>'; 
      document.querySelector('#status').innerHTML = msg; 
     }); 

     db.transaction(function (tx) { 
      tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { 
       var len = results.rows.length, i; 
       msg = "<p>Found rows: " + len + "</p>"; 
       document.querySelector('#status').innerHTML += msg; 
       for (i = 0; i < len; i++) { 
        msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; 
        document.querySelector('#status').innerHTML += msg; 
       } 
      }, null); 
     }); 
} 
</script> 
</head> 
<body> 
<div id="status" name="status">Status Message</div> 
<p>Enter data: <input type="text" id="save_name" name="inputed_name" /><br/></p> 
<p><button onclick="submit()" type="button">Submit Data</button></p> <!--Should print data from the table--> 
</body> 
</html> 

내가 "템플릿"/ 지금은 두 변수를 추가 할

아래의 해결 here

에서 이것에 대한 시작을 가지고 : 여기

는 지금까지 내 코드입니다 내 테이블, 원래 로그 변수 및 시간 스탬프로 작동하는 초

function submit() 
{ 
    var input = document.getElementById("save_name").value; 
    var msg; 
    var time_stamp = new Date(); 

    db.transaction(function (tx) 
    { 
     tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id auto_increment, date_time varchar(128), log varchar(64))'); 
     tx.executeSql('INSERT INTO LOGS (log, date_time) VALUES (?, ?)', [input, time_stamp]); // <--Problem here! 
     msg = '<p>Log message created and row inserted.</p>'; 
     document.querySelector('#status').innerHTML = msg; 
    }); 
} 

나머지 코드는 위와 같습니다. 이 방법이 효과가있을 것이라고 생각하지만 테스트 할 때 테이블에 아무것도 들어 가지 않습니다.

var input = document.getElementById('someId').value; 

... 
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, ?)', [input]); 
... 

난 당신이 잊을 수있을 것 같아요 :

+0

나는이가 무엇인지 데이터베이스 모르는에도 불구하고 (막 바이어스처럼, 그리고 알고 싶다) 나는 문제가 삽입 쿼리에서'localStorage.inputed_name' 기준과 관련이있다 생각 . –

+1

@MarkByers : 모든 목적과 목적을 위해 Sqlite를 기반으로 한 JavaScript 용 브라우저의 로컬 저장소와 모양이 비슷합니다. –

+0

@Mitch :'db'는 어디에서 왔습니까? 또한 HTML을 표시하십시오. 요소의'name' 속성과 함께'getElementById'를 사용할 수 없습니다. –

답변

4

난 당신이 당신이 얻고 당신의 가치를 삽입하는 방식으로 변경할 필요가 있다고 생각 (도를,이 라인의 SQL 구문 오류가 있었다) 값을 유지해야하는 경우가 아니면 localStorage 변수를 모두 포함해야합니다.

+0

옙, 또는 이와 비슷한 것 : 'INSERT INTO LOGS (ID, LOG) VALUES (1,'+ localStorage.getItem ("inputed_name") + ')' – Sean

+0

굉장한 감사합니다 움큼! –

+0

@MitchellByrd : 천만에요. 또한 StackOverflow에 오신 것을 환영합니다. 가능한 경우 옆에있는 체크 표시를 클릭하여 문제를 해결 한 답을 표시해야합니다. 이렇게하면 응답 비율이 높아지고 사람들이 질문을 무시할 위험이 줄어 듭니다. –

0

테이블에 여러 변수를 삽입하려면 다음 형식을 사용하십시오.

tx.executeSql('INSERT INTO CacheRequest (key,value) VALUES (?,?)',[variableKey,variableValue]);
관련 문제