问题:即使我的$settings
数组中包含值(int),当值为0和2时,MySQL也会将NULL
写入表中。
作为参考,$settings
数组中的每个索引都是[0] = max
和[1] = min
的数组。
public function updateAdaptiveArmour($gameid, $shipid, $settings){
foreach ($settings as $key => $value){
debug::log($key." ".$value[0]." ".$value[1]);
//just to show the contents
// [561103190304f][2015-10-04 12:44:41] particle 4 2
// [56110319035b3][2015-10-04 12:44:41] laser 0 0
// [56110319035b3][2015-10-04 12:44:41] molecular 0 0
}
try {
if ($stmt = $this->connection->prepare(
"UPDATE
tac_adaptivearmour
SET
particlealloc = ?,
laseralloc = ?,
molecularalloc = ?
WHERE
gameid = ?
AND shipid = ?
"
))
{
$stmt->bind_param('iiiii', $settings[0][1], $settings[1][1], $settings[2][1], $gameid, $shipid);
$stmt->execute();
$stmt->close();
}
}
catch(Exception $e) {
throw $e;
}
}
理想情况下,对于此示例,我希望UPDATE为2/0/0而不是null / null / null。
答案 0 :(得分:1)
您的数组填充如下:
$settings = [
'particle' => [4, 2],
'laser' => [0, 0],
'molecular' => [0, 0]
];
我希望能回答这个问题,而无需进一步解释。
将修复如下:
$stmt->bind_param('iiiii',
$settings['particle'][1],
$settings['laser'][1],
$settings['molecular'][1],
$gameid,
$shipid
);