使用php更新jquery和mysql的表记录

时间:2013-07-23 19:55:58

标签: php jquery mysql ajax

我需要帮助从通过php填充的列表中更新所选项目并使用jquery更新,这是我所拥有的:

我的update.php前端

 <?php include_once('db.php'); ?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title>Update Collected</title>
 <link rel="stylesheet" href="css/style.css" type="text/css" media="print, projection, screen" />
 <link rel="stylesheet" href="css/bootstrap.css" type="text/css" media="screen" />
 <link rel="stylesheet" href="css/bootstrap-responsive.css" type="text/css" media="screen" />
 </head>

  <body>
  <?php 
  $sql="SELECT * FROM qrnumber";
  $result=mysql_query($sql);


  ?>
 <div class="container-fluid main">

      <div class="row-fluid ">   
         <div class="span12">  
         <span class="success"></span>
    <table cellpadding="0" cellspacing="0" id="tablesorter-demo" class="tablesorter table table-striped">
  <thead>
  <tr>
   <th>id</th><th>Name</th><th>Points</th><th>Collected</th><th>Action</th>
  </tr>
 </thead>
  <?php while($row = mysql_fetch_array($result)) : ?>
  <tr id="<?php echo $row['id']; ?>">
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['points']; ?></td>
<td><?php echo $row['total']; ?></td>
<!-- and so on -->
<td>

   <input id="total" class="required" type="text" name="total">
  <button class="update_btn" rel="<?php echo $row['id']; ?>">update</button>

</td>
 </tr>
  <?php endwhile; ?>
 <?php
  // close connection
  mysql_close();
   ?>
  </table>
  </div>
   </div>
   </div>
   <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>  
    <script type="text/javascript" src="js/jquery.tablesorter.js"></script>
    <script>
    $(document).ready(function(){      

  $(function() {        
    $("#tablesorter-demo").tablesorter({sortList:[[0,0],[2,1]], widgets: ['zebra']});
    $("#options").tablesorter({sortList: [[0,0]], headers: { 
            3:{sorter: false}, 4:{sorter: false}}});
   );   
 $('.update_btn').click(function(){
    $('.success').text("loading...");
     var id = $(this).attr('rel');
     var total = $('#total').val();
    $.post('call.php', {Id:id, Total:total}, function(data) {
        alert(data);
    });
 });

   });
 </script>

 </body>
</html>

这是我的process.php文件

 <?php 
 include_once('db.php');
 var_dump($_POST);
 if (isset($_POST['collected'])){
$collected =  mysql_real_escape_string(htmlentities($_POST['collected']));
 }
 $id = $_POST['id'][0];
  $total = $_POST['total'];
  echo $id. $total;
   mysql_query("UPDATE qrnumber SET total='$total'
   WHERE id='$id'");

   ?>

问题是,当我向输入字段发布一个数字时,它会连接到我的处理php文件,但是不更新内容,它连接到db并将值从update.php传递到进程文件(调用.PHP)。然后,它将所有记录设置为“0”,请有人帮忙。

谢谢,

jv

1 个答案:

答案 0 :(得分:1)

PHP中的$ _POST错误。如果客户端提交的字段名以[]字符结尾,则PHP仅在$ _POST / $ _ GET中创建值数组。 e.g。

将生成以下$ _POST数组:

$_POST = array(
    'not_an_array' => 'bar'
    'is_an_array' => array (
       0 => 'baz'
       1 => 'qux'
    )
);

由于名称中的Id and总计you're submitting in the ajax call don't have []`,它们只是PHP中的单个值,例如。

$id = $_POST['Id'];
$total = $_POST['Total'];

并且点头表示您仍然容易受到SQL注入攻击,因为您尝试在查询中直接使用$id而不会转义它。进入查询字符串的 ANY 外部数据是攻击媒介。你不能只逃避一些价值观,并假设你是安全的。