FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Har WN som tidsfördriv
|
Jag använder MYSQL till ett av mina system. Alla virtuella städer sparas i databasen och information om städerna sparas i kolumner. Ibland inträffar det att kolumnen "Mayor" som sparar ägaren av staden lämnas tom, vilket gör att hela systemet sätts i felläge.
För att åtgärda detta behöver jag logga in och ta bort den stad i databasen som saknar information i kolumnen "Mayor". När det är gjort är det fixat. Jag skulle vilja att personalen som hjälper mig har tillgång till att fixa detta utan att de ges fullständig åtkomst till PHPMyAdmin. Därför slog tanken mig att man borde kunna fixa det ganska enkelt med ett PHPscript. Jag sökte runt lite och hittade nedanstående script som jag modifierat lite, tror ni det skulle funka? PHP-kod:
Senast redigerad av Dakota den 2013-09-15 klockan 12:01 |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Du kan även kolla efter rader där mayor "= 0" i längd och "= NULL".
Skulle rekommendera att du tar bort staden i samma veva när du sätter just mayor till ett tomt värde. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Jag hade nog hellre gjort så scriptet flyttade "förbjudna staden" till felaktiga städer databasen. Så inte nån gjort fel bara och blir förbannand på dig.
|
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Har WN som tidsfördriv
|
Citat:
http://www.w3schools.com/php/php_mysql_delete.asp Systemet fungerar inte på det sättet. Så det är ej aktuellt. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Citat:
Jag vet inte hur du sätter mayor till "tomt". Om inte du heller vet det, så kolla efter fält som både har en tom sträng eller värdet NULL. Senast redigerad av ANttila den 2013-09-15 klockan 12:23 |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Har WN som tidsfördriv
|
Citat:
Om jag försöker förstå dig; Finns det olika sätt att spara ett tomt värde på och man måste veta vilket för att kunna ta bort det från databasen?! |
|||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Du kan i MySql bestämma grundvärdet på ditt databasinlägg . Ofta null eller 0.
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
Citat:
Så jag rekommenderar att du kollar efter båda alternativen. Dvs: Kod:
DELETE FROM TOWNY_TOWNS WHERE TRIM(mayor) = '' OR mayor IS NULL |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Du ska införa en regel (constraint) som redan i databasen förhindrar att tupler (förekomster) med Mayor som är NULL aldrig lagras. Skulle en användare försöka spara detta så ska denne få ett felmeddelande. Felet som du beskriver ska ju aldrig kunna förekomma. Då ska du förhindra att det uppkommer. Om Mayor är en referens till en primärnyckel i en annan tabell kallas det för "främmande nyckel" (förkortat FK) "Forreign key" på engelska du kan definiera kolumnen att vara "NOT NULL". Senast redigerad av Conny Westh den 2013-09-15 klockan 15:34 |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Supermoderator
|
Jag tycker precis som Conny att alla lösningar som föreslagits är helt fel väg att gå. Det är att lösa ett problem som aldrig ska behöva uppstå. Se istället till att man inte kan lägga in en stad utan borgmästare. Ifall det är möjligt att göra detta i nuläget (vilket jag förmodar med tanke på att problemet uppstår) så gör ni personer som börjat spela utan namn (?) sura i onödan. Om det går att börja spela utan namn så går det kanske också att ändra namn till en tom sträng? Gör någon detta av misstag (eller pga intrång) så försvinner deras stad?
Men, ja, den kod du presenterade raderar städer där mayor är en tom sträng (inte NULL). Ifall det finns data kopplad till dessa städer i andra tabeller utan FK så kommer denna emellertid ligga kvar och skräpa. Det finns i så fall förhoppningsvis någon metod / funktion / kod i pluginet eller spelservern för att ta bort en stad "på riktigt". Men jag tycker som sagt var att det är en riktigt dålig lösning på problemet.
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
Svara |
|
|