Javascript 从JQuery Ajax中删除MySQL行
你好! 我正试图通过PHP和AJAX请求删除MySQL数据库中的一行。 我认为使用Javascript 从JQuery Ajax中删除MySQL行,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,你好! 我正试图通过PHP和AJAX请求删除MySQL数据库中的一行。 我认为使用$.ajax{}很容易,但由于某些原因,没有一行不被删除。。。 我有以下脚本(使用jQuery): 在PHP方面: <?php if (isset($_POST['delete'])) { $sql = "DELETE id FROM table1 WHERE id=".$_POST['delete']; $con = mysqli_connect("localhost", "root",
$.ajax{}
很容易,但由于某些原因,没有一行不被删除。。。
我有以下脚本(使用jQuery):
在PHP方面:
<?php
if (isset($_POST['delete'])) {
$sql = "DELETE id FROM table1 WHERE id=".$_POST['delete'];
$con = mysqli_connect("localhost", "root", "", "myDB");
if (!$con) {
die("Connection failed: " . mysqli_error($con));
}
mysqli_query($con, $sql);
mysqli_close($con);
}
?>
在控制台日志中,我看到以下消息:
要删除的行:215
(我要删除的行)
以及:
从数据库中删除行
然后帧清空,数据库再次加载,但我的行仍然在这里!
我用过这个帖子。
我不确定我是否错过了什么,但它不起作用。。。
谁能帮帮我吗?
提前非常感谢!:) 检查您的删除查询
从表中删除名称[WHERE子句]更改
$sql = "DELETE id FROM table1 WHERE id=".intval($_POST['delete']);
到
我认为ajax中的“delete”参数没有将数据发布到url,这就是为什么这是我正在运行的代码
Jquery :
$.ajax({
url: 'url',
type: 'post',
data: {
'user_id': id
},
success: function (res) {
$('#user_'+id).slideUp(500);
}
});
PHP :
mysql_query("DELETE FROM tblusers WHERE user_id = $user_id");
删除查询语法应为
DELETE FROM table1 WHERE id=2
试着像这样使用预先准备好的语句
<?php
if (isset($_POST['delete'])) {
$con = mysqli_connect("localhost", "root", "", "myDB") or die("Connection failed: " . mysqli_connect_error());
$stmt = $con->prepare("DELETE FROM table1 WHERE id=?");
$stmt->bind_param('i',$_POST['delete']);
//The argument may be one of four types:
//i - integer
//d - double
//s - string
//b - BLOB
//change it by respectively
$stmt->execute();
$row_count= $stmt->affected_rows;
if($row_count>0)
{
echo "Deleted";
}else{
echo "Not Deleted";
}
$stmt->close();
$conn->close();
}
?>
您的删除语法错误,请参阅,您还应该在php中使用准备好的语句。
函数删除记录(i){
console.log(“要删除的行:+i”);
$.ajax({
类型:“post”,
url:“../php/delete.php”,
数据:{删除:i},
数据类型:“json”,
编码:对,
成功:功能(数据){
如果(数据==“正常”){
log(“从数据库中删除的行”);
$(“#结果”).empty();
showWholeDB();
}否则{
控制台日志(数据);
}
}
});
}
delete.php
<?php
$con = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
if (isset($_POST['delete'])) {
$idToDelete = intval($_POST['delete']);
$sql = "DELETE FROM table1 WHERE id= ?";
$stmt = $con->prepare($sql);
$stmt->bin_param("i", $idToDelete);
if ($stmt->execute()) {
echo "ok";
} else {
echo "Error : " . $con->error;
}
}
?>
尝试使用print\u r()
和die
进行调试。您将理解代码不可执行的原因。您应该使用DELETE FROM table1,其中id=“.intval($\u POST['DELETE'])的可能重复项
防止SQL注入黑客攻击。@Adder这是如何防止SQL注入的?使用jquery ajax错误函数
确认其路径是否正确。。您要发布数据的页面是url。您正在升级易受SQL注入攻击的代码。请重新考虑。@SimosFasouliotis I just sh查询中的错误是什么?只需将代码更改为使用intval($\u POST['delete'])
,它将受到SQL注入的保护。@Adder谢谢。:)很抱歉回复太晚。很有效!非常感谢您的帮助!:)谢谢!这很有用:)
<?php
if (isset($_POST['delete'])) {
$con = mysqli_connect("localhost", "root", "", "myDB") or die("Connection failed: " . mysqli_connect_error());
$stmt = $con->prepare("DELETE FROM table1 WHERE id=?");
$stmt->bind_param('i',$_POST['delete']);
//The argument may be one of four types:
//i - integer
//d - double
//s - string
//b - BLOB
//change it by respectively
$stmt->execute();
$row_count= $stmt->affected_rows;
if($row_count>0)
{
echo "Deleted";
}else{
echo "Not Deleted";
}
$stmt->close();
$conn->close();
}
?>
function deleteRecord(i) {
console.log("Line to delete: " + i);
$.ajax({
type:"post",
url:"../php/delete.php",
data: {delete : i },
dataType : "json",
encode : true,
success:function(data){
if(data == "ok"){
console.log("Line deleted from the database.");
$("#results").empty();
showWholeDB();
}else{
console.log(data);
}
}
});
}
</script>
<?php
$con = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
if (isset($_POST['delete'])) {
$idToDelete = intval($_POST['delete']);
$sql = "DELETE FROM table1 WHERE id= ?";
$stmt = $con->prepare($sql);
$stmt->bin_param("i", $idToDelete);
if ($stmt->execute()) {
echo "ok";
} else {
echo "Error : " . $con->error;
}
}
?>
<?php
if (isset($_POST['delete'])) {
$sql = "DELETE FROM table1 WHERE id=".$_POST['delete'];
$con = mysqli_connect("localhost", "root", "", "myDB");
if (!$con) {
die("Connection failed: " . mysqli_error($con));
}
mysqli_query($con, $sql);
mysqli_close($con);
}
?>