我有一个奇怪的问题,目前我不知道如何解决。我希望这里有人可以帮助我。 我会尽力解释,但这可能有点一般。
我们有一个运行在PHP和MySQL上的销售系统,这两个版本都很老。你知道的,如果它还没有坏,那就不要修复...;-)
现在,我们看到了一些前所未有的奇怪行为。因为我们是丹麦公司,所以我们使用特殊字符æ,øogå,并且还出售给德国并使用¨符号。 我们看到的行为是,我们的客户突然将姓名命名为在表壳上,“BrørupTrælast”更改为“ Br”。但是,并非每次都这样做,也不是所有案例都卖给该客户。可能只有一两个。
我们在其他国家/地区设有部门,而且还有会说英语的员工,因此并非所有内容都以丹麦语运行。但是我们已经有这些部门几个月和几年了,而这个问题才在几周前发生。一个很大的问题是,最终用户不知道它何时发生,因此他们无法告诉我是否单击了特定按钮,并且员工花几天的时间也看不到错误。
我曾试图挑衅它做“这件事”,但还没有为此感到运气。我也尝试过我们说英语的员工电脑,但没有。我尝试制作一个以斯洛文尼亚语语言运行的虚拟Windows 10,但仍然无法正确更改名称。 我什至尝试对斯洛文尼亚某位同事的计算机进行远程控制,并且该名称保存了所有特殊字符。
这让我有些沮丧,因为我不知道下一步该怎么做,所以我可以找到根本的诅咒。这就是我现在站在这里的地方,并为您的天才寻求帮助:-)
该如何解决以及如何解决?
-------------更新---------------
首先,代码收集字段并将它们放入一些数组中。稍后,它将使用数组中的字段名称和页面中的数据填充查询。
// Init tilbud
$keys = array_keys($_POST);
$bogstav;
$keygroup = array();
$keygroup[0] = array(); // Field 1-99
$keygroup[1] = array(); // Field 100-199
$keygroup[2] = array(); // Field 200-299
$keygroup[3] = array(); // Field 300-399
$keygroup[4] = array(); // Field 400-499
$keygroup[5] = array(); // Field 500-599
$keygroup[6] = array(); // Field 600-699
for ($i=0; $i<count($keys); $i++) {
if (eregi("([R]?)([0-9]{1,3})([A-Z]?)", $keys[$i], $regs)) {
$index = sprintf('%03d', $regs[2]);
$keygroup[substr($index,0,1)][] = $keys[$i];
//Vi skal lige have tjekket og gemt hvilket bogstav felterne starte med
if (strtoupper(substr($keys[$i],0,1)) == "R") {
$bogstav = "R";
} elseif (strtoupper(substr($keys[$i],0,1)) == "E") {
$bogstav = "E";
}
} else {
$keygroup[0][] = $keys[$i];
}
}
for ($i=0; $i<=6; $i++) {
if (sizeof($keygroup[$i])) {
// Check for existing fields
$dbfields = mysql_query('SHOW COLUMNS FROM `ordre'.$i.'`');
$dbcols = mysql_num_rows($dbfields);
$dbc = array();
for ($j=0; $j<$dbcols; $j++) {
$row = mysql_fetch_assoc($dbfields);
$dbc[$j] = $row['Field'];
}
$query = array();
for ($j=0; $j<count($keygroup[$i]); $j++) {
if (!in_array($keygroup[$i][$j], $dbc)) {
}
//Håndtere felter, som skal være int men samtidig udfyldet. Er de ikke det, sætte de lig med 0
if ($keygroup[$i][$j] == "r591") {
if ($_POST[$keygroup[$i][$j]] == "") {
$_POST[$keygroup[$i][$j]] = "0";
}
}
if ($keygroup[$i][$j] == "r531d") {
if ($_POST[$keygroup[$i][$j]] == "") {
$_POST[$keygroup[$i][$j]] = "0";
}
}
if ($keygroup[$i][$j] == "r532d") {
if ($_POST[$keygroup[$i][$j]] == "") {
$_POST[$keygroup[$i][$j]] = "0";
}
}
if ($keygroup[$i][$j] == "r533e") {
if ($_POST[$keygroup[$i][$j]] == "") {
$_POST[$keygroup[$i][$j]] = "0";
}
}
if ($keygroup[$i][$j] != "r70") {
$_POST[$keygroup[$i][$j]] = strtr($_POST[$keygroup[$i][$j]], ',', '.');
}
$query[] = '`'.$keygroup[$i][$j].'` = \''.addslashes($_POST[$keygroup[$i][$j]]).'\'';
}
$save_time = "UPDATE ordre SET timestamp = NOW() WHERE id ='".$tilbudsnummer."'";
mysql_query($save_time) or die(mysql_error());
// Update values to database
$ordrequery = mysql_query('UPDATE `ordre'.$i.'` SET '.implode(', ', $query).' WHERE tilbudsnummer=\''.$tilbudsnummer.'\'') or die(mysql_error());
}
}
这是更新查询,发生错误:
UPDATE `ordre0` SET `submitmenu13` = 'Indgåede aftaler journal / logbog', `thispage` = '1', `kunde_hidden` = '3693', `bygherre_hidden` = '', `kunde_id` = '3693', `r14a` = '31891027', `r9` = 'S', `r14` = '74775024', `navn2` = '', `r15` = '', `r11` = 'Bygmestervej 2. ', `r10` = 'Bjarke S', `adresse2` = '', `r10a` = 'mail@sorensen-byg.dk', `r20a` = '6240', `r20b` = 'Løgumkloster', `r10b` = '', `r20e` = 'DK', `r10c` = '21691545', `r4` = '2019.04.29', `r8` = 'Ovennævnte kunde er nu forsikret for DKK 375.000.-oplyst 4/7-2018', `r5` = '1', `r5a` = '2019', `r2` = '2019.04.29', `r6` = '', `r21` = '', `r18` = 'Flemming Kj', `r22` = '', `bygNavn2` = '', `r23` = '', `r19` = 'Forpagtervej 2. Oksenvad', `r23a` = '', `bygAdresse2` = '', `r23b` = '', `r20c` = '6560', `r20` = 'Sommersted', `department` = '1', `r20d` = '', `r19a` = '1', `r9a` = '', `r24` = 'Oprindelig: 497023 R0', `projektmedlem_1_id` = '74418', `projektmedlem_1_stamdataID` = '9', `projektmedlem_1_pl` = '11863', `projektmedlem_1_forv_start` = '00-00-0000', `projektmedlem_1_forv_slut` = '00-00-0000', `projektmedlem_1_procent` = '0', `projektmedlem_2_pl` = '', `projektmedlem_2_forv_start` = '00-00-0000', `projektmedlem_2_forv_slut` = '00-00-0000', `projektmedlem_2_procent` = '', `counter` = '2' WHERE tilbudsnummer='25319'
r9字段应为“Sørensen”,而r10字段应为“ BjarkeSørensen”。但是然后看到r20b,它说出“Løgumkloster”,这是正确的名称。当内爆部分相同时,如何在2个字段而不是第三个字段中犯错误?稍后在r18的查询中,它应该是“ FlemmingKjær”,它来回跳跃的方式很奇怪。