[php/mysql] Delete functie werkt niet goed.

Pagina: 1
Acties:
  • 121 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Basbarbrbarbr
  • Registratie: Maart 2004
  • Laatst online: 02-01 16:10
Ik ben aan het proberen om een deletefunctie toe te voegen aan mijn webpagina, helaas werkt mijn script niet zoals ik wil :O

iig ik wil uit verschillende tabellen verwijderden waar het killid bijv 100 is, nu gaat dat in 2 van de 3 tabellen goed behalve waar het killid primary key is. iig hier me script:

pagina 1:
code:
1
2
3
4
<form method="post" action="deletemail2.php">
Killmail id: <input type="text" name="kmid"><br />
<input type="submit" name="Submit" value="Submit">
</form>


pagina2:
code:
1
2
3
4
5
6
$query1 = "DELETE FROM Kill WHERE KillID = '$kmid'";
mysql_query($query1) or die(mysql_error());
$query2 = "DELETE FROM Destroyed WHERE KillID = '$kmid'";
mysql_query($query2) or die(mysql_error());;
$query3 = "DELETE FROM Involved WHERE KillID = '$kmid'";
mysql_query($query3) or die(mysql_error());;



2 en 3 doet hji zonder problemen leeg maken, maar bij 1 wil het me niet lukken |:(

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Allereerst komt het nogal vreemd op me over dat je werkwoorden/voltooid deelwoorden als tabelnaam kiest. Entiteiten ("tabellen") hebben doorgaans zelfstandige naamwoorden als naam, en als je een tabel alleen maar kan benoemen met een werkwoord, dan duidt dat vaak op slecht ontwerp. Is de database goed genormaliseerd?

Dat heeft verder niets met je probleem te maken overigens. Hoe zit het met referentiële integriteit? Als je binnen MySQL InnoDB gebruikt en de KillID velden in de 2e en 3e tabel zijn als foreign key gedefiniëerd, dan moet je eerst 2 en 3 uitvoeren, en dan pas 1.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
Je moet even meer informatie geven, want dit is wel erg karig. Wat gaat er dan precies mis? Welke error informatie krijg je dan? Toevallig InnoDB als type? Van wat voor type is KillID, een integer of string. Want je zet nu kwootjes om een integer getal, dat is nergens voor nodig, tenzij het een string is dan.

[ Voor 4% gewijzigd door Sybr_E-N op 18-08-2006 09:01 ]


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Wellicht zijn je database tabellen case sensitive? Je schrijft de tabel 'kill' met kleine letters, terwijl de andere twee tabellen beginnen met een hoofdletter.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Basbarbrbarbr
  • Registratie: Maart 2004
  • Laatst online: 02-01 16:10
@ -NMe-
geprobeert, maar krijg telkens devolgende error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Kill WHERE KillID = 100' at line 1

@Sybr_E-N :
het is een int(11)


@KabouterSuper
nee klopt zo

ben niet zo thuis in Mysql, heb geprobeert op te zoeken wat InnoDB inhoud maar kan het niet zo direct vinden :X


overigens mijn nieuwe code:
code:
1
2
3
4
5
6
$query1 = "DELETE FROM Involved WHERE KillID = $kmid";
$query2 = "DELETE FROM Destroyed WHERE KillID = $kmid";
$query3 = "DELETE FROM Kill WHERE KillID = $kmid";
mysql_query($query1) or die(mysql_error());
mysql_query($query2) or die(mysql_error());
mysql_query($query3) or die(mysql_error());

[ Voor 60% gewijzigd door Basbarbrbarbr op 18-08-2006 09:16 ]


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
De foutmelding ziet er standaard uit: ongeldig statement.

Hoe ziet de tabel eruit? Wellicht heb je een extra underscore in de kolomnaam gestopt.....Kill_ID in plaats van KillID.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

KILL is een reserved word in MySQL 5.0 en kun je dus niet als tabelnaam gebruiken zonder er backticks ( ` ) omheen te zetten in je queries. Kies liever een andere naam of zet er dus backticks omheen.

Als je niet weet wat InnoDB is, dan is er een héél kleine kans dat je het gebruikt. Niet druk over maken. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

SQL:
1
delete from kill where killid = blaat;

Oftewel: kill is een keyword in sql, dit zal wel werken:

SQL:
1
delete from `kill` where killid = blaat

[ Voor 0% gewijzigd door moto-moi op 18-08-2006 09:17 . Reden: stomme -NMe- :'( ]

God, root, what is difference? | Talga Vassternich | IBM zuigt


Acties:
  • 0 Henk 'm!

  • Basbarbrbarbr
  • Registratie: Maart 2004
  • Laatst online: 02-01 16:10
jaaaa

dat doet het, heb ik weer

bedankt mensen O+

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

ehm, zeg me alsjeblieft dat je daar wat checks omheen hebt staan, en dat je register_globals niet aan hebt staan :X

Als je geen checks uitvoert kan ik namelijk zo een DROP TABLE of erger uitvoeren...
Pagina: 1