script funzt im phpmyadmin aber ne in php
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
basis
beitrag
count
counter
datei
dateiname
daten
doppel
fehler
fehlermeldung
formular
gel
gen
insert
owner
register
result
session
speicher
-
habe folgendes script im phpmyadmin ausgef?hrt...es soll doppelte eintr?ge entfernen...macht es auch...
CREATE TEMPORARY TABLE doppel
SELECT *, count(*) AS counter
FROM produkte
WHERE owner=3
GROUP BY Title
HAVING counter > 1;
DELETE produkte FROM produkte, doppel
WHERE produkte.Title = doppel.Title
AND produkte.id != doppel.id;
INSERT INTO produkte SELECT 0, ArtNumber, Title, Description_short, DisplayPrice, Img_url, DeepLink1, owner FROM doppel;
aber
im php-script funktioniert das ganze ne...
mysql_query("CREATE TEMPORARY TABLE doppel"); mysql_query("SELECT *, COUNT(*) AS counter FROM produkte WHERE owner=$id GROUP BY Title HAVING counter > 1"); mysql_query("DELETE produkte FROM produkte, doppel WHERE (produkte.Title = doppel.Title) AND (produkte.id != doppel.id)"); mysql_query("DROP TABLE doppel");
Hat jemand eine L?sung...oder kennt den Fehler ???
Das ganze soll m?glichst auf SQL-Basis sein, da ich nicht jedes gefundene Element einzeln per delete-abfrage aus der DB l?schen m?chte... das kann beim vergleichen von knapp 10 MB Daten in rund 8.000 Eintr?gen ziemlich zeitintensiv sein. ... nikcht kann , sondern ist es auch :)
MfG
Danke schon mal jetzt f?rs angucken und nachdenken
Beitrag ge?ndert am 6.11.2005 14:35 von rlliewi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
kommt denn eine fehlermeldung?
wenn ja welche?
verbindung zur mysql hast du im php script auch aufgebaut? -
warte mal...hier das ganze script...verbindugn ist da...keine fehlermeldung
<?PHP include("is_logged_in.php"); if($is_logged_in == 1){ // ist eingeloggt include("../config.php"); $link = mysql_connect("localhost", $db_user, $db_pass) or die ("Konnte keine Verbindung zum Server herstellen"); mysql_select_db($db_name, $link) or die ("Konnte keine Verbindung zur Datenbank herstellen"); // TODO mysql_query("CREATE TEMPORARY TABLE doppel"); $temp = mysql_query("SELECT *, COUNT(*) AS counter FROM produkte WHERE owner=$id GROUP BY Title HAVING counter > 1"); mysql_query("DELETE produkte FROM produkte, doppel WHERE (produkte.Title = doppel.Title) AND (produkte.id != doppel.id)"); mysql_query("DROP TABLE doppel"); $x = mysql_num_rows($temp); echo "<B>Es wurden insgesamt $x doppelte Eintr?ge entfernt</B>"; } else{ // nicht eingeloggt include("not_logged_in.php"); } ?> <BR><BR> <A href="javascript:history.go(-1);"><FONT color="#666633">«« Zur?ck</A></FONT>
-
hym... immer schwierig ein fehler zu finden wenn es keine fehlermeldung gibt..
um zuz?hlen wieviele datens?tze gel?sch wurden nach dem mysql_query mit DELATE $x = mysql_affected_rows(); machen...
so...
wo wurde die variable $id gesetzt? kommt sie aus der einer (wie ich anheme) session und wurde im is_logged_in.php aus der sessionvariable entnommen und gesetzt. oder ?bergibst du sie per link/bzw formular? als mit den methoden $_GET und $_POST
dann musst du an register globals denken.
eichfach mal
echo "SELECT *, COUNT(*) AS counter FROM produkte WHERE owner = $id GROUP BY Title HAVING counter > 1"
machen und sehen was da an mysql gesendet wird. -
<?php
function parse_mysql_dump ( $url ){
$file_content = file ( $url );
$query = "";
foreach ( $file_content as $sql_line ) {
if ( trim ( $sql_line ) != "" && strpos ( $sql_line, "--" ) === false ){
$query .= $sql_line;
if ( preg_match ( "/;\s*$/", $sql_line ) ) {
$result = mysql_query ( $query ) or die ( mysql_error () );
$query = "";
}
}
}
}
?>
Ein kleines hilfreiches Script am Rande.
Einfach den gesamten SQL Code (?) in einer Datei speichern und dann ?ber
<?php
parse_mysql_dump ( 'dateiname.sql' );
?>
aufrufen.
Dann sollte auch Fehlermeldungen erscheinen.
MfG Lucas -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage