php - 停止 sql 查询更新每个循环中的所有列

标签 php html mysql for-loop while-loop

关于这个问题已经提出了很多问题。我已经完成了一些在 stackoverflow 上给出的解决方案,但它们似乎都不起作用。我有一个带有 foreach 循环的表单,我正在尝试提交 “所选表单” 及其唯一值,然后使用该值运行 SQL 查询。

问题是,提交的文本区域的名称属性。起初查询只会更新循环中的最后一列。然后我尝试了一种不同的方法。例如,将名称属性更改为“someattribute[]”。

现在正在更新查询中的所有选定列

表单.php

 <?php
  ...................
  foreach($stmt as $obj){

      $id = $obj['id'];
      $likes = $obj['like1'];


      echo '<form action="" method="post"    enctype="multipart/form-data">';
      echo '<input type="hidden" name="lkcv[]" value="'.$id.'">';
      echo '<input type="hidden" name="like" value="">';
      echo '<input type="image" src="images/like.png" id="lksub" width="15" 
  value="som" height="15" style="float:right;position:relative;margin-
  right:290px;"/><div class="ld">'.$likes.'</div>';
      echo '</form>’;
     }
  ?>

查询.php

<?php

if (isset($_POST['like'])){

     $com_id = $_POST['lkcv'];

     for ($i=0; $i<sizeof($com_id);$i++){
         # query into db table to know current voting score 
         $query = mysql_query("SELECT like1 FROM comment WHERE id = '$com_id[$i]'");

         # increase or dicrease voting score
         if ($data = mysql_fetch_array($query)) {

               $like = ++$data['like1'];

               # update new voting score
               $query2 = mysql_query("UPDATE comment SET like1 = '{$like}' WHERE id = '$com_id[$i]'");

    }
        }
  }
    ?>

query.php [已解决]

  <?php
    if( isset( $_POST['lkcv'] ) && is_array( $_POST['lkcv'] ) )
    {
      $idArray = array();
      foreach( $_POST['lkcv'] as $value )
  {
    $idArray[] = intval( $value );
   }

   $db->query( "UPDATE comment SET like1 = like1 + 1 WHERE id IN (".implode( 
   ',', $idArray ).")" );
      }
         ?>

注意:一旦我开始工作,我将更新我的查询以使用 PDO 准备好的语句。感谢您的帮助。

最佳答案

我会像这样在一个查询中执行此操作:

<?php

if( isset( $_POST['lkcv'] ) && is_array( $_POST['lkcv'] ) )
{
    $idArray = array();

    foreach( $_POST['lkcv'] as $value )
    {
        $idArray[] = intval( $value );
    }

    $db->query( "UPDATE comment SET like1 = like + 1 WHERE id IN (".implode( ',', $idArray ).")" );
}

关于php - 停止 sql 查询更新每个循环中的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607604/

相关文章:

html - 在css中对齐一个固定的元素

mysql - 选择在特定日期之后没有任何记录/行的 ID(同一表)

mysql索引使用问题

php - $.get 没有给出错误但不起作用

jquery - 在表格中水平显示单选按钮选项?

php - Omnipay:PayPal REST API 集成

html - 带参数的 css 命令

mysql - 关系数据库架构设计: Versioning properties on a large scale

php - 允许在正则表达式中使用括号和其他符号

PHP从输入插入到mysql变量值