Kom ihåg mig?
Home Menu

Menu


PHP-script som tar bort MYSQL som saknar en viss data

 
Ämnesverktyg Visningsalternativ
Oläst 2013-09-15, 11:59 #1
Dakotas avatar
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2009
Inlägg: 1 298
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
Dakotas avatar
 
Reg.datum: Nov 2009
Inlägg: 1 298
Standard PHP-script som tar bort MYSQL som saknar en viss data

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:
<?php
$con
=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo 
"Failed to connect to MySQL: " mysqli_connect_error();
  }

mysqli_query($con,"DELETE FROM TOWNY_TOWNS WHERE mayor=''");

mysqli_close($con);
?>
Det jag är osäker på är hur man ska visa scriptet att kolumnen mayor ska vara tom. Var det korrekt att skriva '' utan info inuti?

Senast redigerad av Dakota den 2013-09-15 klockan 12:01
Dakota är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 12:07 #2
ANttila ANttila är inte uppkopplad
Medlem
 
Reg.datum: Aug 2013
Inlägg: 81
ANttila ANttila är inte uppkopplad
Medlem
 
Reg.datum: Aug 2013
Inlägg: 81
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.
ANttila är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 12:11 #3
Tsarraz Tsarraz är inte uppkopplad
Medlem
 
Reg.datum: Apr 2013
Inlägg: 193
Tsarraz Tsarraz är inte uppkopplad
Medlem
 
Reg.datum: Apr 2013
Inlägg: 193
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.
Tsarraz är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 12:13 #4
Dakotas avatar
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2009
Inlägg: 1 298
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
Dakotas avatar
 
Reg.datum: Nov 2009
Inlägg: 1 298
Citat:
Ursprungligen postat av ANttila Visa inlägg
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.
Som jag förstår det så är det precis det som scriptet gör? I exemplet på sidan där jag hittade det försvann hela alltet från databasen eftersom just informationen i kolumnen var xxx så då borde väl samma sak ske om informationen är ingenting alls?

http://www.w3schools.com/php/php_mysql_delete.asp

Citat:
Ursprungligen postat av Tsarraz Visa inlägg
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.
Systemet fungerar inte på det sättet. Så det är ej aktuellt.
Dakota är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 12:21 #5
ANttila ANttila är inte uppkopplad
Medlem
 
Reg.datum: Aug 2013
Inlägg: 81
ANttila ANttila är inte uppkopplad
Medlem
 
Reg.datum: Aug 2013
Inlägg: 81
Citat:
Ursprungligen postat av Dakota Visa inlägg
Som jag förstår det så är det precis det som scriptet gör? I exemplet på sidan där jag hittade det försvann hela alltet från databasen eftersom just informationen i kolumnen var xxx så då borde väl samma sak ske om informationen är ingenting alls?.
Ett fält som har värdet NULL är inte samma sak som att ett fält har en tom sträng som värde ("").

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
ANttila är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 12:23 #6
Dakotas avatar
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Nov 2009
Inlägg: 1 298
Dakota Dakota är inte uppkopplad
Har WN som tidsfördriv
Dakotas avatar
 
Reg.datum: Nov 2009
Inlägg: 1 298
Citat:
Ursprungligen postat av ANttila Visa inlägg
Ett fält som har värdet NULL är inte samma sak som att ett fält har en tom sträng som värde ("").

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 och värdet NULL.
Förstår inte alls vad du menar. Jag har inte heller gjort systemet som detta ska funka mot, utan det är ett plugin till en spelserver. Det jag vet är att när kolumnen "mayor" är tom så måste staden tas bort för annars kan felet ej lösas.

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?!
Dakota är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 12:28 #7
Tsarraz Tsarraz är inte uppkopplad
Medlem
 
Reg.datum: Apr 2013
Inlägg: 193
Tsarraz Tsarraz är inte uppkopplad
Medlem
 
Reg.datum: Apr 2013
Inlägg: 193
Du kan i MySql bestämma grundvärdet på ditt databasinlägg . Ofta null eller 0.
Tsarraz är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 12:29 #8
ANttila ANttila är inte uppkopplad
Medlem
 
Reg.datum: Aug 2013
Inlägg: 81
ANttila ANttila är inte uppkopplad
Medlem
 
Reg.datum: Aug 2013
Inlägg: 81
Citat:
Ursprungligen postat av Dakota Visa inlägg
Förstår inte alls vad du menar. Jag har inte heller gjort systemet som detta ska funka mot, utan det är ett plugin till en spelserver. Det jag vet är att när kolumnen "mayor" är tom så måste staden tas bort för annars kan felet ej lösas.

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?!
Ja, du kan antingen göra det helt tomt (NULL) eller sätta en sträng som inte har några tecken i sig ("").

Så jag rekommenderar att du kollar efter båda alternativen.

Dvs:
Kod:
DELETE FROM TOWNY_TOWNS WHERE TRIM(mayor) = '' OR mayor IS NULL
ANttila är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-15, 15:29 #9
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av Dakota Visa inlägg
Förstår inte alls vad du menar. Jag har inte heller gjort systemet som detta ska funka mot, utan det är ett plugin till en spelserver. Det jag vet är att när kolumnen "mayor" är tom så måste staden tas bort för annars kan felet ej lösas.

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?!
Du angriper problemet från fel håll.

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
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-09-17, 11:32 #10
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
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
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:38.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017