Php 使用Ajax函数在带有复选框的数据库中进行Postgre多记录删除查询时,不返回任何内容,也不返回';行不通
我有一个ajax函数,可以从选中的复选框中检索ID。然后使用postgre查询将ID作为where子句的条件传递给delete文件 如果查询成功:Php 使用Ajax函数在带有复选框的数据库中进行Postgre多记录删除查询时,不返回任何内容,也不返回';行不通,php,javascript,ajax,postgresql,Php,Javascript,Ajax,Postgresql,我有一个ajax函数,可以从选中的复选框中检索ID。然后使用postgre查询将ID作为where子句的条件传递给delete文件 如果查询成功: if($qry){ $note = "Success"; echo json_encode(array('notify'=>$note)); }` else...... `el
if($qry){
$note = "Success";
echo json_encode(array('notify'=>$note));
}` else...... `else{
$note = "Failed";
echo json_encode(array('notify'=>$note));
}
然后我的ajax成功函数将通过以下方式接收:
success: function(data)
{
if(data.notify=="Success"){
console.log(data.notify);
}
else{
console.log(data.notify);
}
}
但在我单击删除按钮后,console.log没有显示任何内容,也没有删除任何记录。我怎样才能使这项工作正常进行?谢谢。这是我的密码
interface.php
<?php
include ('connection.php');
$result = pg_query("SELECT h.hholdnumber,h.yr_residing,h.purok_number,h.brgy_name,f.f_id,f.fname,f.birthday,f.mname,f.age,f.lname,f.civilstatus,f.gender,f.civilstatus,f.job from house_hold as h,f_member as f where h.hholdnumber=f.hholdnumber");
while($row = pg_fetch_array($result))
{
$fid=$row['f_id'];
echo "<tr>";
echo "<td><center><input type=\"checkbox\" class=\"check_id\" name=\"check_id[]\" value=".$row['f_id']." /></center></td> ";
echo "<td><center>" . $row['hholdnumber'] . "</center></td>";
echo "<td><center>" . $row['brgy_name'] . "</center></td>";
echo "<td><center>" . $row['purok_number']."</center></td>";
echo "<td><center>" . $row['yr_residing'] . "</center></td>";
echo "<td><center>" . $row['fname'] . "</center></td>";
echo "<td><center>" . $row['lname'] . "</center></td>";
echo "<td><center>" . $row['mname'] . "</center></td>";
echo "<td><center>" . $row['gender'] . "</center></td>";
echo "<td><center>" . $row['birthday'] . "</center></td>";
echo "<td><center>" . $row['age'] . "</center></td>";
echo "<td><center>" . $row['civilstatus'] . "</center></td>";
echo "<td><center>" . $row['job'] . "</center></td>";
echo "</tr>";
}
?>
</tbody>
</table>
</form>
<button id="delete_button" name="delete_button" >Delete</button>
<script type="text/javascript">
$("#delete_button").click(function(){
var array_id= $('input[name="check_id[]"]:checked').map(function(){
return this.value;
}).get();
var postdata = {'f_id':array_id};
$.ajax({
type: "POST",
url: 'mem_del.php',
dataType: 'json',
data: postdata,
success: function(data)
{
if(data.notify=="Success"){
console.log(data.notify);
}
else{
console.log(data.notify);
}
}
});
});
</script>
删除
$(“#删除按钮”)。单击(函数(){
var数组_id=$('input[name=“check_id[]”:checked').map(函数(){
返回此.value;
}).get();
var postdata={'f_id':数组_id};
$.ajax({
类型:“POST”,
url:'mem_del.php',
数据类型:“json”,
数据:postdata,
成功:功能(数据)
{
if(data.notify==“成功”){
console.log(data.notify);
}
否则{
console.log(data.notify);
}
}
});
});
mem_del.php
<?php
include ('connection.php');
$f_id = $_POST['f_id'];
$qry = pg_query("DELETE FROM f_member WHERE f_id in($f_id)");
if($qry){
$note = "Success";
echo json_encode(array('notify'=>$note));
}
else{
$note = "Failed";
echo json_encode(array('notify'=>$note));
}
?>
一如既往,不要猜测、检查日志、调试等。如果需要临时在PostgreSQL中记录语句,可以执行以下操作:
ALTER database foo SET log_statements=all'
然后,当您完成时:
ALTER DATABASE foo RESET log_statements;
但问题是,看看传递的是什么,在发送之前是否引用了它,等等
还要注意,您当前的方法倾向于SQL注入。您希望采用参数化路线,这可能意味着在如何生成查询字符串方面要有一点创造性。1。记录查询字符串和
$f_id
,您几乎肯定会发现它不是一个有效的逗号分隔的id列表。然后停止手工构建查询,也使用参数。