有些奇怪的事情正在发生,我无法指出原因。
Array $ regions是区域的反向字典[regionCode => regionID。在函数parse_r()中,检查新的regionCode,如果是,则将此regionCode添加到字典中。这是添加新区域的唯一地方。但有时(可能是50个案例中的1个)新行添加了以前存在的区域名称。 regionCode是一个文本,非唯一字段。
为什么会这样,我做错了什么?
function reps() {
global $mysqli;
$regions=get_regions();
...
$status = parse_r($filename);
...
}
function get_regions() {
global $mysqli;
$regions=array();
$sql = 'SELECT * FROM `regionCodes` ORDER BY `regionCodes`.`id` DESC';
$res = $mysqli->query($sql);
if( $res !== false ) {
while ($row = $res->fetch_assoc()) {
$regions[$row['regionCode']]=$row['id'];
}
}
return $regions;
}
function parse_r($filenameFull) {
global $mysqli, $regions;
$r['regionCode']=$ttt['regionCode'];
if ( !(array_key_exists($r['regionCode'], $regions)) ) {
$sql = sprintf("INSERT INTO `regionCodes`(`regionCode`) VALUES ('%s')", $mysqli->real_escape_string($r['regionCode']) );
$res = $mysqli->query($sql);
$regions=get_regions();
}
$r['regionID'] = $regions[$r['regionCode']];