[英]How to SELECT, INSERT, UPDATE and DELETE data from SQLite with PHP (and HTML)
I do have a SQLite Web Interface
, that should SELECT, INSERT, UPDATE and DELETE data from a SQLite table. 我确实有一个SQLite Web Interface
,该SQLite Web Interface
应该从SQLite表中进行SELECT,INSERT,UPDATE和DELETE数据。 Unfortunately, only the SELECT query seems to work. 不幸的是,似乎只有SELECT查询有效。 I cannot INSERT, UPDATE or DELETE. 我无法插入,更新或删除。
sshTunnel.sqlite --> mydata sshTunnel.sqlite-> mydata
CREATE TABLE "mydata" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "SSH_USER" VARCHAR, "SSH_IP" VARCHAR, "SSH_PORT" VARCHAR, "SSH_PW" VARCHAR, "SSH_KEYFILE" VARCHAR, "TUNNEL_LOCAL_INTERFACE" VARCHAR, "TUNNEL_LOCAL_PORT" VARCHAR, "TUNNEL_REMOTE_IP" VARCHAR, "TUNNEL_REMOTE_PORT" VARCHAR, "DESCRIPTION" VARCHAR)
Here are my code snippets... 这是我的代码片段...
index.php index.php
<script>
$(document).ready(function()
{
function fetch_data()
{
$.ajax({
url:"select.php",
method:"POST",
success:function(data)
{
$('#live_data').html(data);
}
});
}
fetch_data();
$(document).on('click', '#btn_add', function()
{
var SSH_USER = $('#SSH_USER').text();
var SSH_IP = $('#SSH_IP').text();
var SSH_PORT = $('#SSH_PORT').text();
var SSH_PW = $('#SSH_PW').text();
var SSH_KEYFILE = $('#SSH_KEYFILE').text();
var TUNNEL_LOCAL_INTERFACE = $('#TUNNEL_LOCAL_INTERFACE').text();
var TUNNEL_LOCAL_PORT = $('#TUNNEL_LOCAL_PORT').text();
var TUNNEL_REMOTE_IP = $('#TUNNEL_REMOTE_IP').text();
var TUNNEL_REMOTE_PORT = $('#TUNNEL_REMOTE_PORT').text();
var DESCRIPTION = $('#DESCRIPTION').text();
$.ajax({
url:"insert.php",
method:"POST",
data:{SSH_USER:SSH_USER, SSH_IP:SSH_IP, SSH_PORT:SSH_PORT, SSH_PW:SSH_PW, SSH_KEYFILE:SSH_KEYFILE, TUNNEL_LOCAL_INTERFACE:TUNNEL_LOCAL_INTERFACE, TUNNEL_LOCAL_PORT:TUNNEL_LOCAL_PORT, TUNNEL_REMOTE_IP:TUNNEL_REMOTE_IP, TUNNEL_REMOTE_PORT:TUNNEL_REMOTE_PORT, DESCRIPTION:DESCRIPTION},
dataType:"text",
success:function(date)
{
alert(data);
fetch_data();
}
});
});
$(document).on('click', '.btn_edit', function()
{
var SSH_USER = $(this).data("id1");
var SSH_IP = $(this).data("id2");
var SSH_PORT = $(this).data("id3");
var SSH_PW = $(this).data("id4");
var SSH_KEYFILE = $(this).data("id5");
var TUNNEL_LOCAL_INTERFACE = $(this).data("id6");
var TUNNEL_LOCAL_PORT = $(this).data("id7");
var TUNNEL_REMOTE_IP = $(this).data("id8");
var TUNNEL_REMOTE_PORT = $(this).data("id9");
var DESCRIPTION = $(this).data("id10");
if(confirm("Are you sure you want to edit this?"))
{
$.ajax({
url:"edit.php",
method:"POST",
data:{SSH_USER:SSH_USER, SSH_IP:SSH_IP, SSH_PORT:SSH_PORT, SSH_PW:SSH_PW, SSH_KEYFILE:SSH_KEYFILE, TUNNEL_LOCAL_INTERFACE:TUNNEL_LOCAL_INTERFACE, TUNNEL_LOCAL_PORT:TUNNEL_LOCAL_PORT, TUNNEL_REMOTE_IP:TUNNEL_REMOTE_IP, TUNNEL_REMOTE_PORT:TUNNEL_REMOTE_PORT, DESCRIPTION:DESCRIPTION},
dataType:"text",
success:function(date)
{
alert(data);
fetch_data();
}
});
}
});
$(document).on('click', '.btn_delete', function()
{
var id = $(this).data("id12");
if(confirm("Are you sure you want to delete this?"))
{
$.ajax({
url:"delete.php",
method:"POST",
data:{id:id},
dataType:"text",
success:function(date)
{
alert(data);
fetch_data();
}
});
}
});
});
</script>
... ...
<div id="live_data"></div>
select.php select.php
<?php
$db = new SQLite3('sshTunnel.sqlite');
$results = $db->query('SELECT * FROM mydata');
$output = '';
$output .= '<div class="table-responsive">
<table class="table table-bordered">
<tr>
<th>ID</th>
<th>SSH_USER</th>
<th>SSH_IP</th>
<th>SSH_PORT</th>
<th>SSH_PW</th>
<th>SSH_KEYFILE</th>
<th>TUNNEL_LOCAL_INTERFACE</th>
<th>TUNNEL_LOCAL_PORT</th>
<th>TUNNEL_REMOTE_IP</th>
<th>TUNNEL_REMOTE_PORT</th>
<th>DESCRIPTION</th>
<th>Editieren</th>
<th>Löschen</th>
</tr>';
while ($row = $results->fetchArray())
{
$output .= '<tr>
<td>'.$row["ID"].'</td>
<td class="SSH_USER" data-id1="'.$row["ID"].'" contenteditable="true">'.$row["SSH_USER"].'</td>
<td class="SSH_IP" data-id2="'.$row["ID"].'" contenteditable="true">'.$row["SSH_IP"].'</td>
<td class="SSH_PORT" data-id3="'.$row["ID"].'" contenteditable="true">'.$row["SSH_PORT"].'</td>
<td class="SSH_PW" data-id4="'.$row["ID"].'" contenteditable="true">'.$row["SSH_PW"].'</td>
<td class="SSH_KEYFILE" data-id5="'.$row["ID"].'" contenteditable="true">'.$row["SSH_KEYFILE"].'</td>
<td class="TUNNEL_LOCAL_INTERFACE" data-id6="'.$row["ID"].'" contenteditable="true">'.$row["TUNNEL_LOCAL_INTERFACE"].'</td>
<td class="TUNNEL_LOCAL_PORT" data-id7="'.$row["ID"].'" contenteditable="true">'.$row["TUNNEL_LOCAL_PORT"].'</td>
<td class="TUNNEL_REMOTE_IP" data-id8="'.$row["ID"].'" contenteditable="true">'.$row["TUNNEL_REMOTE_IP"].'</td>
<td class="TUNNEL_REMOTE_PORT" data-id9="'.$row["ID"].'" contenteditable="true">'.$row["TUNNEL_REMOTE_PORT"].'</td>
<td class="DESCRIPTION" data-id10="'.$row["ID"].'" contenteditable="true">'.$row["DESCRIPTION"].'</td>
<td><button type="button" name="edit_btn" data-id11="'.$row["ID"].'" class="btn btn-xs btn-warning btn-block btn_edit">Editieren</button></td>
<td><button type="button" name="delete_btn" data-id12="'.$row["ID"].'" class="btn btn-xs btn-danger btn-block btn_delete">Löschen</button></td>
</tr>';
}
$output .= '<tr>
<td></td>
<td id="SSH_USER" contenteditable="true"</td>
<td id="SSH_IP" contenteditable="true"</td>
<td id="SSH_PORT" contenteditable="true"</td>
<td id="SSH_PW" contenteditable="true"</td>
<td id="SSH_KEYFILE" contenteditable="true"</td>
<td id="TUNNEL_LOCAL_INTERFACE" contenteditable="true"</td>
<td id="TUNNEL_LOCAL_PORT" contenteditable="true"</td>
<td id="TUNNEL_REMOTE_IP" contenteditable="true"</td>
<td id="TUNNEL_REMOTE_PORT" contenteditable="true"</td>
<td id="DESCRIPTION" contenteditable="true"</td>
<td colspan="13"><button type="button" name="btn_add" id="btn_add" class="btn btn-xs btn-block btn-success">Hinzufügen</button></td>
</tr>
</table>
</div>';
echo $output;
$db->close();
?>
insert.php insert.php
<?php
$db = new SQLite3('sshTunnel.sqlite');
$db->exec('INSERT INTO mydata( SSH_USER,
SSH_IP,
SSH_PORT,
SSH_PW,
SSH_KEYFILE,
TUNNEL_LOCAL_INTERFACE,
TUNNEL_LOCAL_PORT,
TUNNEL_REMOTE_IP,
TUNNEL_REMOTE_PORT,
DESCRIPTION)
VALUES( '".$_POST["SSH_USER"]."',
'".$_POST["SSH_IP"]."',
'".$_POST["SSH_PORT"]."',
'".$_POST["SSH_PW"]."',
'".$_POST["SSH_KEYFILE"]."',
'".$_POST["TUNNEL_LOCAL_INTERFACE"]."',
'".$_POST["TUNNEL_LOCAL_INTERFACE"]."',
'".$_POST["TUNNEL_LOCAL_PORT"]."',
'".$_POST["TUNNEL_REMOTE_IP"]."',
'".$_POST["TUNNEL_REMOTE_PORT"]."',
'".$_POST["DESCRIPTION"]."')');
$db->close();
?>
edit.php edit.php
<?php
$db = new SQLite3('sshTunnel.sqlite');
$db->exec("UPDATE mydataSET SSH_USER='".$_POST["SSH_USER"]."',
SSH_IP='".$_POST["SSH_IP"]."',
SSH_PORT='".$_POST["SSH_PORT"]."',
SSH_PW='".$_POST["SSH_PW"]."',
SSH_KEYFILE='".$_POST["SSH_KEYFILE"]."',
TUNNEL_LOCAL_INTERFACE='".$_POST["TUNNEL_LOCAL_INTERFACE"]."',
TUNNEL_LOCAL_PORT='".$_POST["TUNNEL_LOCAL_PORT"]."',
TUNNEL_REMOTE_IP='".$_POST["TUNNEL_REMOTE_IP"]."',
TUNNEL_REMOTE_PORT='".$_POST["TUNNEL_REMOTE_PORT"]."',
DESCRIPTION='".$_POST["DESCRIPTION"]."'
WHERE ID='".$_POST["ID"]."'");
$db->close();
?>
delete.php delete.php
<?php
$db = new SQLite3('sshTunnel.sqlite');
$db->exec('DELETE FROM mydata WHERE ID='".$_POST["ID"]."'');
$db->close();
?>
Are you sure your scripts are compiling and running? 您确定脚本正在编译并正在运行吗? I spot a strange use of quotes in insert.php: you open the string with single quote and them use double quote to terminate and concatenate... same for delete.php. 我在insert.php中发现引号的一种奇怪用法:您用单引号打开了字符串,并且它们使用双引号终止和连接了...与delete.php相同。
Also, make sure you "addslashes" to all the data you place in the query. 另外,请确保对要放入查询中的所有数据“加上”。 If a single quote enters any content, all your queries will fail and, of course, security matters. 如果在单引号中输入任何内容,则所有查询都会失败,当然,安全性也很重要。
-- Sérgio -塞尔吉奥
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.