问题:尽管我的$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.
最佳答案 您的数组填充如下:
$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
);