如何在foreach循环中执行两个不同的php预处理语句?

时间:2016-02-22 02:01:26

标签: php loops mysqli foreach prepared-statement

我想获取列的值,向其中添加一个字符串,然后使用新值更新列,并对数组的每个元素重复此操作。我想使用准备好的语句,所以我的梦想代码(我知道这不起作用)将是:

$getcolumn = $link->prepare("SELECT `column` FROM `table` WHERE `id`=? LIMIT 1");
$getcolumn->bind_param("i", $a_value);

$updatecolumn = $link->prepare("UPDATE `table` SET `column`=? WHERE `id`=? LIMIT 1");
$updatecolumn->bind_param("si", $newcolumnvalue, $a_value);

foreach($array as $a => $a_value) {             
    $getcolumn->execute();
    $getcolumn->bind_result($columnvalue);
    $getcolumn->fetch();

    $newcolumnvalue = $columnvalue.$addedstring;    

    $updatecolumn->execute();
}

$getcolumn->close();
$updatecolumn->close();

但是,要使它工作,我应该在执行$ updatecolumn之前关闭$ getcolumn。但是如果我在foreach循环中关闭$ getcolumn,它将不会重复数组的所有元素。那么如何使用预处理语句以一种有效的方式编写它?提前谢谢。

1 个答案:

答案 0 :(得分:0)

就像上面的评论一样,我建议采用另一种方式并使用MySQL内置函数的 @enum AVAudioSession error codes @abstract These are the error codes returned from the AVAudioSession API. ... @constant AVAudioSessionErrorCodeCannotInterruptOthers The app's audio session is non-mixable and trying to go active while in the background. This is allowed only when the app is the NowPlaying app. typedef NS_ENUM(NSInteger, AVAudioSessionErrorCode) { ... AVAudioSessionErrorCodeCannotInterruptOthers = '!int', /* 0x21696E74, 560557684 */ ... ,而不是从第一次准备中获取所有行:

for(int k = 0; k < arr.length; k++)
        {
            for(int p = 0; p < arr[k].length; p++)
            {
                least = arr[k][p];
                for(int i = k; i < arr.length; i++)
                {
                    if(i == k)
                        z = p + 1;
                    else
                        z = 0;
                    for(;z < arr[i].length; z++)
                    {
                        if(arr[i][z] <= small)
                        {
                            least = array[i][z];
                            row = i;
                            col = z;
                        }
                    }
                }
            arr[row][col] = arr[k][p];
            arr[k][p] = least;
            System.out.print(arr[k][p] + " ");
            }
            System.out.println();
        }

它只是取消了获取行的第一步,这只是更新与该ID相关的列,并将当前列值连接到您想要的添加字符串。