 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
16.05.2006, 13:46
|
#1
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
MySQL Abfrage will nicht?
Moin moin,
Diese billige Abfrage will nicht?
PHP-Code:
$ack = "SELECT step FROM `tracking` WHERE `session` LIKE '".$session."'"; $sendack = mysql_query($ack); echo mysql_num_rows($sendack); usw. usw.
num_rows ist immer null, obwohl zu den jeweiligen sessions zig Einträge gibt.
Gebe ich exakt diese Abfrage direkt beim phpMyAdmin ein, liefert er mir die korrekten Datensätze zurück. Ich muss an die Daten kommen, um doppelte Einträge zu den jeweiligen Schritten innerhalb eines Produktabschlusses ausschließen zu können, es geht da um Statistiken, bis wohin welcher user kommt. Exakt dieses Tool hatte ich schon 7-8 mal im Einsatz, immer ohne Probleme.
MySQL Version ist: 3.23.58
PHP Version 4.4.1
ICh habe zig solcher Abfragen in anderen Anwendungen laufen, jemand eine Idee warum er hier nicht will? Bin etwas ratlos und sicher auch müde und blind.
So long,
Jan
PS: Ohne die WHERE Einschränkung klappt es übrigens prima, da innerhalb weniger Tage jedoch einige 10Tsd Einträge da sind, brauche ich die Einschränkung, das Ding läuft ca. 3 Monate, ja bin ich denn deppert?
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
Geändert von skipperjan (16.05.2006 um 13:49 Uhr).
|
|
|
16.05.2006, 13:54
|
#2
|
|
TP-Moderator
Registriert seit: Jun 2004
Ort: Hannover
|
Funktioniert es mit
"SELECT step FROM `tracking` WHERE `session` LIKE '%{$session}%'"
?
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
|
|
|
16.05.2006, 14:01
|
#3
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
Ändert nix...
num_rows oder affected_rows ist und bleibt = 0
Das ist echt merkwürdig...........
Weitere Ideen?
Bin für alles offen....
Allerdings sehe ich in meiner Synthax auch keinen Fehler, sonst klappt das alles immer super bei Domainfactory....
So long,
Jan
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
16.05.2006, 14:05
|
#4
|
|
TP-Member
Registriert seit: May 2006
Ort: Würzburg
|
mysql_num_rows() würde ich dir nicht empfehlen am besten nimmst du zum zählen von einträgen die mysql funktion COUNT(). Bei einer großen Anzahl von Einträgen ist mysql_num_rows(); ziemlich langsam.
Beispiel:
Code:
SELECT
COUNT(step)
FROM
tracking
WHERE
session LIKE 'session'
bzw. in PHP:
PHP-Code:
<?php
$result = mysql_fetch_assoc(mysql_query("SELECT COUNT(step) AS count FROM tracking WHERE session LIKE '".$session."'"));
echo $result['count']; // Anzahl der Einträge
?>
Nun aber zurück zu deinem eigentlichen Problem, wenn es ohne WHERE funktioniert ist irgendwas an deinem WHERE falsch, sicher das du hier keine MySQL Platzhalter ala % verwenden musst?
Wenn du eine Session auslesen willst wo du genau die Session-ID weißt brauchst du doch sowieso kein LIKE, dann reicht doch ein völlig normales WHERE session = '$session'.
|
|
|
16.05.2006, 14:16
|
#5
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
jaja...
das ist schon richtig,
aber num_rows ist nur zum testen, wenn er mehr als 0 ausgibt, fliegt es eh wieder raus.
Like oder = war auch nur ein Test, die Anfrage müsste klappen, geht aber beides nicht, es gibt da keine Platzhalter, wie gesagt alles über die direkte sql-Abfrage im phpMyadmin rein und feddich, schon liefert er die korrekten Sätze.
Entweder gibt es zwischen den Versionen einen Bug oder ich bin zu dämlich
Würde die letzte DB nicht über 100 MB groß gewesen sein, würde ich auf die Eingrenzung verzichten, so muss es aber sein.
So long,
Jan
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
16.05.2006, 14:19
|
#6
|
|
TP-Member
Registriert seit: May 2006
Ort: Würzburg
|
seltsam seltsam, es ist bestimmt nur eine kleinigkeit oder ein teil der uns bisher verborgen geblieben ist so das wir keine genaue antwort liefern können.
wenn die abfrage mit phpmyadmin problemlos funktioniert sollte sie das auch jederzeit tun wenn man haargenau die selbe über php ausführt.
ein echo mysql_error(); hast du wohl auch schon gesetzt? hast du den query mal im php ausgegeben? also anstatt mysql_query einfach mal ein echo gesetzt? sicher das $session z.b. wirklich einen wert hat?
|
|
|
16.05.2006, 15:55
|
#7
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
step ist ein Schlüsselwort - versuchs doch mal mit
SELECT `step` .... 
|
|
|
16.05.2006, 16:10
|
#8
|
|
TP-Member
Registriert seit: May 2006
Ort: Würzburg
|
also SELECT step FROM table; funktioniert mit MySQL 5.0.20a problemlos auch ohne ` ... was jedoch sein könnte das es mit MySQL 4.x oder noch älteren MySQL Versionen nicht funktioniert, kann ich gerade nicht nachvollziehen da ich bereits überall die 5er Version einsetze..
Geändert von be|chameleon (16.05.2006 um 16:13 Uhr).
|
|
|
16.05.2006, 17:08
|
#9
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
Nix ist verborgen...
Hmpf,
noch habe ich nicht rausgefunden was der Trick ist, die Anwendung läuft jetzt erstmal, aber zufriedenstellend ist das nicht, hier mal die ganze Datei:
PHP-Code:
<?php session_start();
//Parameter aus mod_rewrite: $blz = $_GET['erstens']; $name = $_GET['zweitens']; $step = $_GET['drittens'];
//Basisparams $session = session_id(); $url_lang = explode( '/' , $_SERVER['HTTP_REFERER']); $domain = $url_lang[2];
if(empty($domain)) $domain="kein Referer";
include("dbconnect.php"); $ack = "SELECT `step` FROM `tracking` WHERE `session` = '".$session."'"; $sendack = mysql_query($ack); while($row = mysql_fetch_object($sendack)){ if($row->step == $step) $exit = 1; } if($exit!=1){ //Schritt wurde für diese Session noch nicht aufgezeichnet, also in die DB $query="INSERT INTO tracking(BLZ, Institut_name, step,session) VALUES ('$blz','$name','$step','$session')"; $ergebnis_string = mysql_query($query); //Aufsammeln der Bruttodaten $backup_query="INSERT INTO steps(user, referer, blz, Institut_name, step) VALUES ('$session','$domain','$blz','$name','$step')"; $ergebnis_backup = mysql_query($backup_query); }
mysql_close($verbindung);
//Image zurückliefern $image = imagecreate(1,1); $farbe_body=imagecolorallocate($image,243,243,243); header("Content-Type: image/gif"); imagegif($image);
?>
Per mod_rewrite wird das Teil gerufen:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)_(.*)_(.*).gif$ /koelnbonn/redirect.php?erstens=$1&zweitens=$2&drittens=$3 [L]
bei den entsprechenden Produkten werden halt die Pixel eingesetzt und bevor ich das Bild liefer, frag ich meinen Kram ab und trage es in die DB, pillepalle Anwendung die bisher immer gut funktioniert hat, heute habe ich wohl Tomaten auf den Augen, mysql_error liefert übrigens nix, sonst hätte ich mich ja nicht gewundert, sondern den Fehler behoben,
so long,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
16.05.2006, 17:14
|
#10
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
wo haperts denn noch ?
es sieht doch soweit alles ok aus, auch wenn man das eine oder andere vereinfachen könnte.
|
|
|
16.05.2006, 17:36
|
#11
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
An der gleichen Stelle...
Zitat:
|
Zitat von St@eff.en
wo haperts denn noch ?
|
Immernoch das gleiche Problem, allen Notationsversuchen zum Trotz, liefert die Abfrage keine Datensätz zurück....
Bis ich das gelöst habe, sind also bei gleicher Session und gleichem Step mehrere Einträge möglich => exit wird nie 1 => es wird immer alles eingetragen
Zitat:
|
Zitat von St@eff.en
es sieht doch soweit alles ok aus, auch wenn man das eine oder andere vereinfachen könnte.
|
Das ist allerdings wahr  , nur musste es jetzt schnell gehen und ob es jetzt 30 oder 20 Zeilen Code sind, ist mir relativ schnuppe.
So long,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
16.05.2006, 18:51
|
#12
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
also ich würde das so lösen:
PHP-Code:
$ack = "select count(`step`) FROM `tracking` where `step`='$step' and `session` = '$session'";
$sendack = mysql_query($ack);
$row = mysql_fetch_row($sendack);
$exit=$row[0]>0 ? 1 : 0;
if($exit==0) {
...
}
wenn ichs richtig überblicke 
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:32 Uhr.
|
 |