【问题标题】:Looping mysqli update with variable increasing by 1 in while loop循环mysqli更新,变量在while循环中增加1
【发布时间】:2020-09-03 20:48:51
【问题描述】:

我正在尝试循环此代码,因为这将是动态生成的。它从mysql获取行数并循环多次。 POST 来自 ajax,它也是循环的,并且运行良好。在 php 部分,我不确定为什么它不起作用。我尝试了很多不同的循环变体。

$queryEle = "SELECT * FROM featureSheetContent WHERE `user_id` = '$userID' AND `feature_id` = '$featureID'";
  $resultEle = mysqli_query($connect,$queryEle);
  $rowEle = mysqli_num_rows($resultEle);

  $i = 1;

  while ($i < $rowEle) {
    $eleID.$i = $_POST['eleID'.$i];
    $eleID .= $eleID.$i;
    $resizeWidth.$i = $_POST['resizeWidth'.$i];
    $resizeWidth .= $eleID.$i;
    $resizeHeight.$i = $_POST['resizeHeight'.$i];
    $resizeHeight .= $eleID.$i;

    $UploadMain = $connect->prepare("UPDATE featureSheetContent SET `ele_width` = ?, `ele_height` = ? WHERE id = ?");
    $UploadMain->bind_param('sss', $resizeWidth, $resizeHeight, $eleID);
    $UploadMain->execute();

    $i++;
  }

未循环的代码有效:

  $eleID1 = $_POST['eleID1'];
  $resizeWidth1 = $_POST['resizeWidth1'];
  $resizeHeight1 = $_POST['resizeHeight1'];
  $eleID2 = $_POST['eleID2'];
  $resizeWidth2 = $_POST['resizeWidth2'];
  $resizeHeight2 = $_POST['resizeHeight2'];

  
  $UploadMain = $connect->prepare("UPDATE featureSheetContent SET `ele_width` = ?, `ele_height` = ? WHERE id = ?");
  $UploadMain->bind_param('sss', $resizeWidth1, $resizeHeight1, $eleID1);
  $UploadMain->execute();
  $UploadMain = $connect->prepare("UPDATE featureSheetContent SET `ele_width` = ?, `ele_height` = ? WHERE id = ?");
  $UploadMain->bind_param('sss', $resizeWidth2, $resizeHeight2, $eleID2);
  $UploadMain->execute();

【问题讨论】:

    标签: php jquery ajax mysqli


    【解决方案1】:

    变量变量的语法错误;正确的语法是${"eleID".$i}。但是每次循环都不需要使用不同的变量。将UPDATE 查询绑定到一组特定的变量,并从POST 变量中重新分配这些变量。

    $eleID = $resizeWidth = $resizeHeight = null; // Create the variables before binding
    $UploadMain = $connect->prepare("UPDATE featureSheetContent SET `ele_width` = ?, `ele_height` = ? WHERE id = ?");
    $UploadMain->bind_param('sss', $resizeWidth, $resizeHeight, $eleID);
    
    for ($i = 1; $i <= $rowEle; $i++) {
        $eleID = $_POST['eleID'.$i];
        $resizeWidth = $_POST['resizeWidth'.$i];
        $resizeHeight = $_POST['resizeHeight'.$i];
        $UploadMain->execute();
    }
    

    顺便说一句,您的UPDATE 查询将为任何用户更新一行,而不仅仅是user_id = '$userID'。这是故意的吗?

    【讨论】:

    • 您好,我尝试了您的代码,但它似乎不起作用。奇怪的是一切看起来都正确。至于不包括 user_id,这是因为我只向每个用户显示特定的行,并且更新只会修改那一行。
    • 是什么阻止了用户提交与您显示的 ID 不同的 ID?他们可以打开开发者工具并更改隐藏的输入。
    • 尝试在顶部添加变量初始化,看看是否修复它。
    • 顶部的变量初始化也不起作用
    • 我看不出这不起作用的任何原因。您确定$_POST 变量已填写吗?
    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多