2011-09-22 5 views
0

나는 지난 몇 일 동안 PHP 스크립트를 저장 버튼으로 사용하는 간단한 개념을 사용 해왔다. 웹 페이지에서이 버튼을 누르면 table A에서 table B 사이의 데이터가 삽입되고 table A을 삭제하고 index.html으로 리디렉션됩니다.PHP SQLite3 쿼리 INSERT, DELETE & Redirect

<?php 
try { 
    $db = new PDO('sqlite:/srv/db/data.db'); 
} 

    $db->exec("INSERT * INTO Archive FROM resultstbl"); 
    $db->exec("DELETE * FROM resultstbl") 
unset($db); 
?> 

지금까지 나는이 PHP 쿼리에 대한 도움과 모든 지침을 사용할 수있었습니다.

답변

1

나는 같은 것을 할 것입니다 :

<? 

if(isset($_POST['but1'])) // this checks if the button is clicked 
{ 
    $db = new PDO('sqlite:/srv/db/data.db'); // I assume this is working fine 
    $db->exec("INSERT INTO Archive SELECT * FROM resultstbl"); // tables must be equivalent in terms of fields 
    $db->exec("DELETE FROM resultstbl") // You want to delete the records on this table or the table itself? This deletes the records 

    header("Location: index.php?page=home"); // This will only work if you didn't output anything to the screen yet. If you displayed something it will fail 
    die(); 

} 

?> 

<form action="sql.php" method="POST"> <!-- Assuming this page is sql.php --> 

    <input type="submit" name="but1" value="GO!"/> 
</form> 

당신은 삽입을위한 구문을 확인하고 여기에 SQLite는 대한 문에서도 삭제할 수 있습니다 :

http://www.sqlite.org/lang_delete.html

+0

http://www.sqlite.org/lang_insert.html 매우 매우 감사 많이, 나는 이걸로 머리카락을 꺼내려고했다. 그래도 한가지 빠른 추가 질문 .... 스크립트는 원했던대로 테이블의 내용을 순환하고 삭제합니다. 그러나 resultstbl의 내용을 아카이브에 복사하지 않았습니다. resultstbl에 Archive 키와 일치하지 않는 키가 있기 때문일 수 있습니까? – bikerben

+0

확실히, 테이블을 다른 테이블로 직접 선택할 수 있으려면 테이블이 정확히 동일한 구조를 가져야합니다. 당신이 지금 가지고있는 문제를 해결하려면 다음과 같이해야합니다 :'아카이브에 삽입 (field1, field2, field3) (result1에서 field1, field2, field3 선택) ' –

+0

그냥 발 메모, 위의 내 질문에 대한 답변 예를 들자면 두 필드는 위에서 언급 한 INSERT 구문이 작동하는 것과 정확히 같은 필드를 가질 필요가 있습니다. – bikerben