使用Ajax函数的复选框中的Postgre多记录删除查询返回任何内容并且不起作用

时间:2013-08-12 15:54:18

标签: php javascript ajax postgresql

我有一个ajax函数,可以从选中的复选框中检索id。然后将id传递给删除文件,作为使用postgre查询的where子句的条件。

如果查询成功:

                    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>

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));
                     }

  ?>

1 个答案:

答案 0 :(得分:0)

与往常一样,不要猜测,检查日志,调试等。如果您需要暂时在PostgreSQL中记录语句,可以执行以下操作:

ALTER database foo SET log_statements=all'

然后当你完成时:

ALTER DATABASE foo RESET log_statements;

但重点是,看看传递的内容,是否在发送之前引用它等等。

还要注意您当前的方法很容易注入SQL。您希望使用参数化路线,这可能意味着您在生成查询字符串时更具创造性。