我想获取列的值,向其中添加一个字符串,然后使用新值更新列,并对数组的每个元素重复此操作。我想使用准备好的语句,所以我的梦想代码(我知道这不起作用)将是:
$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,它将不会重复数组的所有元素。那么如何使用预处理语句以一种有效的方式编写它?提前谢谢。
答案 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相关的列,并将当前列值连接到您想要的添加字符串。