Я столкнулся со странной ошибкой в моем веб-приложении на PHP, которую я не могу устранить.Сценарий php извлекает строку из базы данных, обрабатывает ее, сериализует новый запрос и записывает строку обратно в базу данных.
Я скопировал код, который делает это:
foreach($a as $key => $value)
{
$a[$key]="'".mysql_real_escape_string($value)."'";
}
$a['lastUpdate']="$when";
//assembling request
$assignments=array();
foreach($a as $key => $value)
{
$assignments[]="$key=$value";
}
$q="UPDATE wtfb2_villages SET ".implode(',',$assignments)." WHERE (id=${a['id']})";
logText($q);
logText(mysql_error());
$r=mysql_query($q) or die(__FILE__.':'.__LINE__.':'.mysql_error().':'.$q);
logText(mysql_affected_rows());
logText('Mysql error in query is: '.mysql_error()."\n");
Это обновление, похоже, выполняется.mysql_error () выдает пустую строку.mysql_acted_rows говорит 1 так же, как когда все сделано.Но если я загляну в таблицу с помощью phpmyadmin, то обнаружу, что ничего не изменилось.
Я записал в запрос сам его запрос:
UPDATE wtfb2_villages SET id='22',ownerId='56',villageName='Új falu',x='0',y='1',buildPoints='7.2226273148149',barracksLevel='0',archeryRangeLevel='0',stablesLevel='0',workshopLevel='0',townHallLevel='0',blacksmithLevel='0',goldmineLevel='1',wallLevel='0',spearmen='0',archers='0',knights='0',catapults='0',diplomats='0',spearmanLevel='0',archerLevel='0',knightLevel='0',catapultLevel='0',spearmenTraining='0',archersTraining='0',knightsTraining='0',catapultsTraining='0',diplomatsTraining='0',lastUpdate='2011-01-18 21:56:10' WHERE (id='22')
Если я просто скопировал и вставил этот запрос прямо в phpmyadminон выполняет его, и я вижу результат в таблице.
Таблица использует механизм myIsam.Так что никаких транзакций или чего-то подобного.
Я застрял в этой проблеме более чем на 2 часа, и я не могу выяснить, что происходит.
Это единственный запрос, который делает это,запросы до и после этого выполняются правильно.
Есть идеи?