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

Php 停止sql查询更新每个循环中的所有列,php,html,mysql,for-loop,while-loop,Php,Html,Mysql,For Loop,While Loop,关于这个问题已经提出了很多问题。我已经讨论了stackoverflow上给出的一些解决方案,但它们似乎都不起作用。我有一个带有foreach循环的表单,我正在尝试提交带有唯一值的“所选表单”,然后使用该值运行SQL查询 问题是,正在提交的文本区域的name属性。首先,查询只更新循环中的最后一列。然后我尝试了另一种方法。例如,将name属性更改为“someattribute[]” 现在正在更新查询中所有选定的列 form.php 此查询循环了多少次?如果每个表行都被添加到“lkcv”数组中,那么每

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

问题是,正在提交的文本区域的name属性。首先,查询只更新循环中的最后一列。然后我尝试了另一种方法。例如,将name属性更改为“someattribute[]”

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

form.php


此查询循环了多少次?如果每个表行都被添加到“lkcv”数组中,那么每一行都将被修改,因为FOR循环被告知为“lkcv”数组的每个成员循环

因此,如果表有50行,并且所有50行都被传递到数组中,那么这50行中的每一行都将受到影响

您还可以通过增加UPDATE语句中的'like1'字段来优化代码,如下所示

更新注释集like1=like1+1,其中id='$com\u id[$i]'

更新注释集like1=like1+1,其中id='$com\u id'


如果您想像我假设的那样只执行一次。

为什么需要使用select和update将like增加1?为什么不直接在mysql中使用?它降低了代码的复杂性。像下面这样尝试并检查值。如果仍然存在问题,则通过打印、回显和退出进行调试

<?php
if(isset($_POST['lkcv']) && isset($_POST['like'])){
  if (is_array($_POST['lkcv'])) {
    foreach($_POST['lkcv'] as $value){
               $query2 = mysql_query("UPDATE comment SET like1  = like1 + 1 where id = '$value'");
    }
  } 
}
?>

我会在一个查询中这样做:

<?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 ).")" );
}

那么实际的问题是什么呢here@Uchiha,将更新注释表中所有行的列“like1”。我只想更新id为“1”的行。请为结果查询提供输出:echo“UPDATE comment SET like1='{$like}',其中id='$com_id[$i]'”@Andriy,all+1被添加到“like1”列中的上一个值。所以结果是值+1,每次单击按钮时。@chris94正如您在隐藏字段中所说的名称属性为array[],您必须在post值中检查它是否为array。然后您必须通过foreach of$_POST['lkcv']检索它。例如,是这样,因为它循环了4次,这与我在表中的行数相同。我该如何修复它?它应该循环多少次?还是只执行一次?如果后者随后在不带数组括号的情况下发布id,并删除循环,以便查询只执行一次。“$value”中的值是正确的,但不会在我的表中更新。@chris94仅使用where id='$value',按钮无法使用“If(isset($\u post['lkcv'])和&isset($\u post['like'])”语句。@chris94表单中没有显示任何按钮。你通过了lkcv,就像通过隐藏一样。所以在这个表单提交后,它必须在POST中可用。你犯了一个小错误,比如在mysql中是一个保留关键字,这就是我使用like1的原因。你没有像1+1那样使用。谢谢你的帮助,现在可以用了。
  <?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 ).")" );
      }
         ?>
<?php
if(isset($_POST['lkcv']) && isset($_POST['like'])){
  if (is_array($_POST['lkcv'])) {
    foreach($_POST['lkcv'] as $value){
               $query2 = mysql_query("UPDATE comment SET like1  = like1 + 1 where id = '$value'");
    }
  } 
}
?>
<?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 ).")" );
}