Php 如何在组中更新mysql数据库字段(使用GROUP BY)

Php 如何在组中更新mysql数据库字段(使用GROUP BY),php,html,mysql,sql,Php,Html,Mysql,Sql,我的数据库中有一个名为youi的表。除aff和desc字段外,表中的所有字段都已包含值。见下图 现在,我的HTML页面中有一个表单(见下图),我想根据它们的营地更新desc和aff字段。我以前还没有处理过这种设置。我已经思考了差不多一天了,但似乎仍然没有找到一个完美的解决方案。你能给我一些如何实现这一目标的想法或解决方案吗?我正在使用PHP和mySQL 提前谢谢 我看到的最简单的方法是对每一行使用不同的更新。 您可以在php中的一个循环中实现这一点,在该循环中,您使用每行的aff、desc和ca

我的数据库中有一个名为youi的表。除aff和desc字段外,表中的所有字段都已包含值。见下图

现在,我的HTML页面中有一个表单(见下图),我想根据它们的营地更新desc和aff字段。我以前还没有处理过这种设置。我已经思考了差不多一天了,但似乎仍然没有找到一个完美的解决方案。你能给我一些如何实现这一目标的想法或解决方案吗?我正在使用PHP和mySQL

提前谢谢


我看到的最简单的方法是对每一行使用不同的更新。 您可以在php中的一个循环中实现这一点,在该循环中,您使用每行的aff、desc和campaign的值构造更新

sql应该是:


php部分我没有太多帮助,抱歉。

您可以使用CASE,WHEN,然后在循环中进行一次查询。 这是我使用一个简单的for循环来更新一组照片上的一组标题创建的语句

UPDATE Images SET caption = CASE imgID WHEN 389 THEN 'a' WHEN 390 THEN 'sdf' WHEN 391 THEN 'safasasadf' WHEN 392 THEN 'fs' WHEN 393 THEN 'dfdsf' WHEN 394 THEN 'sfdf' END WHERE imgID IN (389,390,391,392,393,394); 
希望有帮助

aff=(somefield='slkd'然后yyy结束时的情况),
desc=(somefield='slkdfdsd'然后xxx end时的情况)

我终于找到了这个问题的解决方案。我使用jQuery、AJAX、PHP和mySQL的组合来实现它

所有
都具有相同的id。
的id相同。以下是我的HTML代码示例:

<select id="youiaff">
    <option>1001</option>
    <option>1007</option>
    <option>1009</option>
    <option>1013</option>
    <option>1017</option>
    <option>1018</option>
    <option>1022</option>
</select>
<input id="youidesc" type="text" />
<label id="youicamp"></label>
<button type='button' class='btn btn-success saveyouiid'>Save</button>
然后,我使用AJAX将变量传递给PHP脚本:

$.ajax({
    type: 'post',
    url: 'saveyouiid.php',
    data: {
        desc:desc,
        aff:aff,
        camp:camp,
    },
    success:function(data){

    }
});
单击“保存”按钮后,将执行此代码。因此,完整的jQuery/AJAX应该是:

$('.saveyouiid').click(function(){
    var desc = $("input[id='youidesc']")
          .map(function(){return $(this).val();}).get();
    var aff = $("select[id='youiaff']")
          .map(function(){return $(this).val();}).get();
    var camp = $("label[id='youicamp']")
          .map(function(){return $(this).text();}).get();

    $.ajax({
        type: 'post',
        url: 'saveyouiid.php',
        data: {
            desc:desc,
            aff:aff,
            camp:camp,
        },
        success:function(data){

        }
    });
});
PHP脚本(saveyouiid.PHP)随后将接受通过AJAX发送的值。这些值是数组。接下来,我将这些数组组合成一个多维数组。然后,我获取各个值并执行mySQL查询。以下是脚本的外观:

<?php
$con = mysqli_connect("localhost","imu_fryu","frankyouiIMU2013","imu_frankyoui");
if (mysqli_connect_errno($con)) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$aff = $_POST['aff'];
$desc = $_POST['desc'];
$camp = $_POST['camp'];

$arr = array_map(null, $aff, $desc, $camp);

foreach($arr as $array)
{
    $aff = $array[0];
    if ($aff == ">> Select Affiliate ID <<"){
        $affID = "0";
    }else{
        $affID = $aff;
    }
    $desc = $array[1];
    $camp = $array[2];

    $sql1 = "UPDATE youi SET aff = '$affID', descr = '$desc' WHERE camp = '$camp'";

    if (!mysqli_query($con,$sql1)) {
        die('Error: ' . mysqli_error($con));
    }

}

mysqli_close($con);
?>

我也在考虑这个问题,但我的客户希望在底部有一个更新按钮,我认为这是非常困难的。你可以在每行前面有一个按钮进行更新,或者在底部有一个按钮,你必须遍历每行中的所有值,构建更新并逐个执行。就可用性而言,我知道你的客户想要一个按钮。
$('.saveyouiid').click(function(){
    var desc = $("input[id='youidesc']")
          .map(function(){return $(this).val();}).get();
    var aff = $("select[id='youiaff']")
          .map(function(){return $(this).val();}).get();
    var camp = $("label[id='youicamp']")
          .map(function(){return $(this).text();}).get();

    $.ajax({
        type: 'post',
        url: 'saveyouiid.php',
        data: {
            desc:desc,
            aff:aff,
            camp:camp,
        },
        success:function(data){

        }
    });
});
<?php
$con = mysqli_connect("localhost","imu_fryu","frankyouiIMU2013","imu_frankyoui");
if (mysqli_connect_errno($con)) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$aff = $_POST['aff'];
$desc = $_POST['desc'];
$camp = $_POST['camp'];

$arr = array_map(null, $aff, $desc, $camp);

foreach($arr as $array)
{
    $aff = $array[0];
    if ($aff == ">> Select Affiliate ID <<"){
        $affID = "0";
    }else{
        $affID = $aff;
    }
    $desc = $array[1];
    $camp = $array[2];

    $sql1 = "UPDATE youi SET aff = '$affID', descr = '$desc' WHERE camp = '$camp'";

    if (!mysqli_query($con,$sql1)) {
        die('Error: ' . mysqli_error($con));
    }

}

mysqli_close($con);
?>