Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   mysql abfrage rückgabewert (https://www.delphipraxis.net/125110-mysql-abfrage-rueckgabewert.html)

Delphi-Phil 30. Nov 2008 21:48


mysql abfrage rückgabewert
 
Hallo Zusammen,

ich habe folgenden Code:
Code:
$link = $_SERVER["REQUEST_URI"];

$sql = 'SELECT *FROM nl_anmeldungen WHERE link = $link';

mysql_query($sql,$con);
Der Code läuft soweit 1a.

Jetzt möchte ich gerne prüfen, ob die sql abfrage einen datensatz in der datenbank findet oder nicht. das ganze soll mit einer if else funktion laufen.

Valle 30. Nov 2008 21:49

Re: mysql abfrage rückgabewert
 
Code:
if (mysql_num_rows($result) >= 1) {
  /* gefunden */
} else {
  /* nichts gefunden */
}
Edit:// Ah, ich sehe gerade, ich habe einen Parameter vergessen. *g* Ansonsten einfach mal die PHP-Manual benutzen. Die ist Deutsch und leicht verständlich. ;)

Mit freundlichen Grüßen,

Valle

Delphi-Phil 30. Nov 2008 21:55

Re: mysql abfrage rückgabewert
 
Code:
$link = $_SERVER["REQUEST_URI"];

$sql = 'SELECT *FROM nl_anmeldungen WHERE link = $link';

mysql_query($sql,$con);

if (mysql_num_rows($result) >= 1) {
echo "<font color='#ff0000'>Daten gefunden!</font>
";
} else {
 echo "<font color='#ff0000'>keine Daten gefunden!</font>
";
}
Ist das so richtig? Ich bekomme immer raus das keine daten gefunden worden sind...irgendwas muss doch faul sein..?!??!?!

mkinzler 30. Nov 2008 21:56

Re: mysql abfrage rückgabewert
 
Code:
$result = mysql_query($sql,$con);

Delphi-Phil 30. Nov 2008 22:02

Re: mysql abfrage rückgabewert
 
es kommt immer keine daten gefunden!

Code:
$link = $_SERVER["REQUEST_URI"];

$sql = 'SELECT *FROM nl_anmeldungen WHERE link = $link';

$result = mysql_query($sql,$con);

if (mysql_num_rows($result) >= 1) {
echo "<font color='#ff0000'>Daten gefunden!</font>
";
} else {
 echo "<font color='#ff0000'>keine Daten gefunden!</font>
";
}

Valle 30. Nov 2008 22:06

Re: mysql abfrage rückgabewert
 
Bist du auch mit mysql_query zum Server Verbunden?
Hast du dort die Verbindung auch in $con gespeichet?
Was gib mysql_error() nach dem mysql_query aus?
Bist du dir sicher, dass ein entsprechender Datensatz existiert?

Edit:// Du solltest umbedingt noch im SQL-String Anführungszeichen um $link setzen:

Code:
$sql = "SELECT * FROM nl_anmeldungen WHERE link = '".$link."'";
Mit freundlichen Grüßen,

Valle

Delphi-Phil 30. Nov 2008 22:13

Re: mysql abfrage rückgabewert
 
ich hab geschlafen sry. es wurde nach einem result gefragt mit einer anzahlt von>=1 ich habe aber nur einen richtigen datensatz in der datenbank der auf die abfrage rauskommt.

Valle 30. Nov 2008 22:18

Re: mysql abfrage rückgabewert
 
Zitat:

Zitat von Delphi-Phil
ich hab geschlafen sry. es wurde nach einem result gefragt mit einer anzahlt von>=1 ich habe aber nur einen richtigen datensatz in der datenbank der auf die abfrage rauskommt.

:gruebel:

Also dass >= "größer oder gleich" heißt weißt du ja, oder? Selbst wenn nur ein Datensatz beim Query rauskommt, müsste die Abfrage eigentlich auch wahr sein. Nur bei weniger als 1 (0,9 oder 0 ;-) ) wird die Abfrage unwahr.

Mit freundlichen Grüßen,

Valle

Delphi-Phil 30. Nov 2008 22:25

Re: mysql abfrage rückgabewert
 
so ist jetzt der code:
Code:
$link = $_SERVER["REQUEST_URI"];

$sql = 'SELECT *FROM nl_anmeldungen WHERE link = $link';

$result = mysql_query($sql,$con);


if (mysql_num_rows($result) >= 1)
{
 echo "<font color='#ff0000'>Daten gefunden!</font>
";

else
{
 echo "<font color='#ff0000'>Keine Daten gefunden!</font>
";
}
es ist jetzt gerade kein passender datensatz mehr zu der abfrage vorhanden der richtig zurückliefern sollte.
Es ist nur ein einziger datensatz vorhanden und der passt nicht zu der abfrage müsste also keine daten anzeigen.
Es wird aber Daten gefunden! angezeigt!

WARUM?

mkinzler 30. Nov 2008 22:32

Re: mysql abfrage rückgabewert
 
Bist du sicher, dass du das Richtige anzeigst?

DeddyH 1. Dez 2008 07:32

Re: mysql abfrage rückgabewert
 
Code:
$link = $_SERVER["REQUEST_URI"];

$sql = "SELECT *FROM nl_anmeldungen WHERE link = $link"; //in Anführungszeichen

//oder so:
//$sql = 'SELECT *FROM nl_anmeldungen WHERE link = '.$link;

$result = mysql_query($sql,$con);


if (mysql_num_rows($result) >= 1)
{
    echo "<font color='#ff0000'>Daten gefunden!</font>
";
}
else
{
    echo "<font color='#ff0000'>Keine Daten gefunden!</font>
";
}

Delphi-Phil 1. Dez 2008 09:48

Re: mysql abfrage rückgabewert
 
Guten Morgen,

ich vertehe die Welt nicht mehr. Irgendwo muss ein Fehler sein:
Code:
$link = $_SERVER["REQUEST_URI"];

$sql = "SELECT *FROM nl_anmeldungen WHERE link = $link";

$result = mysql_query($sql,$con);


if (mysql_num_rows($result) >= 1)
{
    echo "<font color='#ff0000'>Daten gefunden!</font>
";
}
else
{
    echo "<font color='#ff0000'>Keine Daten gefunden!</font>
";
}
jetzt habe ich einen falschen und zwei richtige einträge in der datenbank, im bezug auf die abfrage.

wieso kommt: "keine datensätze gefunden" ???

DeddyH 1. Dez 2008 09:58

Re: mysql abfrage rückgabewert
 
Du machst ja anscheinend einen Stringvergleich: link = $link. Da muss die Schreibweise exakt gleich sein. Ist sie das?

Delphi-Phil 1. Dez 2008 10:07

Re: mysql abfrage rückgabewert
 
also ich sehe es so das die schreibweise gleich ist!

Kannst du es mal testen bitte!

*snip*

ich lasse hinger dem doppelpunkt bei keine daten gefunden mal zum testen die variavble $link ausgeben

[edit=Admin]Link auf Wunsch des Autors entfernt. Mfg, Daniel[/edit]

DeddyH 1. Dez 2008 10:10

Re: mysql abfrage rückgabewert
 
ich@da.de -> Anmeldung erfolgreich :gruebel:

Delphi-Phil 1. Dez 2008 10:11

Re: mysql abfrage rückgabewert
 
ja du musst ja noch die email bekommen!!

und in der mail ist ein link!

DeddyH 1. Dez 2008 10:21

Re: mysql abfrage rückgabewert
 
Ja gut, wie sehen die Einträge in der DB denn aus?

[edit] Der String, der mir angezeigt wird, lautet /newsletter_bestaetigung.php/902cbc498b15becc838bd7ad96c3fc39 [/edit]

Delphi-Phil 1. Dez 2008 10:24

Re: mysql abfrage rückgabewert
 
-- phpMyAdmin SQL Dump
-- version 2.8.2.4
-- http://www.phpmyadmin.net
--
-- Host: localhost:3306
-- Erstellungszeit: 01. Dezember 2008 um 11:23
-- Server Version: 5.0.45
-- PHP-Version: 5.2.6
--
-- Datenbank: `kueber_newsletter`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `nl_anmeldungen`
--

CREATE TABLE `nl_anmeldungen` (
`id` int(11) NOT NULL auto_increment,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`anrede` varchar(50) NOT NULL,
`vorname` varchar(50) NOT NULL,
`nachname` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`bestaetigung` varchar(50) NOT NULL,
`link` varchar(255) NOT NULL,
`linkmail` varchar(255) NOT NULL,
`md5wert` varchar(50) NOT NULL,
`bestaetigungemail` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=106 DEFAULT CHARSET=utf8 AUTO_INCREMENT=106 ;

--
-- Daten für Tabelle `nl_anmeldungen`
--

INSERT INTO `nl_anmeldungen` ( *snip* );

[edit=Admin]Daten auf Wunsch des Autors entfernt. Mfg, Daniel[/edit]

DeddyH 1. Dez 2008 10:31

Re: mysql abfrage rückgabewert
 
Der Zeilenumbruch ist Dir aufgefallen?

P.S.: Hab ich mich aus Faulheit zur Frau gemacht :lol:

Delphi-Phil 1. Dez 2008 10:33

Re: mysql abfrage rückgabewert
 
welchen zeilenumbruch meinst du?????

DeddyH 1. Dez 2008 10:35

Re: mysql abfrage rückgabewert
 
Hinter "newsletter_bestaetigung.php", den hab ich nach der Anmeldung auch gesehen, obwohl er nicht im Quelltext steht.

Delphi-Phil 1. Dez 2008 10:37

Re: mysql abfrage rückgabewert
 
und nu? haste ne idee???

DeddyH 1. Dez 2008 10:45

Re: mysql abfrage rückgabewert
 
Es würde doch genügen, den Hash zu vergleichen, oder?

Delphi-Phil 1. Dez 2008 10:49

Re: mysql abfrage rückgabewert
 
haste recht? wie würdest du das denn dann machen?

DeddyH 1. Dez 2008 10:50

Re: mysql abfrage rückgabewert
 
Explode mit dem Slash als Trenner, dann hast Du als letztes Array-Element den Hash.

Delphi-Phil 1. Dez 2008 10:51

Re: mysql abfrage rückgabewert
 
kannst du mir den code mal bitte posten!?!

DeddyH 1. Dez 2008 10:53

Re: mysql abfrage rückgabewert
 
Code:
$array = explode ( '/', $string );
$hash = $array[count($array) - 1];
Müsste so stimmen.

Delphi-Phil 1. Dez 2008 10:56

Re: mysql abfrage rückgabewert
 
ich geh mal kurz ne kleinigkeit essen und dann teste ich es!
bis gleich!

Delphi-Phil 1. Dez 2008 11:22

Re: mysql abfrage rückgabewert
 
ist es so richtig??

Code:
$link = $_SERVER["REQUEST_URI"];

$sql = "SELECT *FROM nl_anmeldungen WHERE link = $link";

$result = mysql_query($sql,$con);


if $array = explode ( '/', $string );
   $hash = $array[count($array) - 1];
{
    echo "<font color='#ff0000'>Daten gefunden!</font>
";
}
else
{
    echo "<font color='#ff0000'>Keine Daten gefunden!</font>
";
}

DeddyH 1. Dez 2008 12:18

Re: mysql abfrage rückgabewert
 
Wenn man davon ausgeht, dass in der DB auch nur der Hash gespeichert wird:
Code:
$link = $_SERVER["REQUEST_URI"];
$array = explode ( '/', $link );
$hash = $array[count($array) - 1];

$sql = "SELECT *FROM nl_anmeldungen WHERE link = $hash";

$result = mysql_query($sql,$con);


if (mysql_num_rows($result))
{
    echo "<font color='#ff0000'>Daten gefunden!</font>
";
}
else
{
    echo "<font color='#ff0000'>Keine Daten gefunden!</font>
";
}

Xong 1. Dez 2008 12:36

Re: mysql abfrage rückgabewert
 
Zitat:

Zitat von Delphi-Phil
wieso kommt: "keine datensätze gefunden" ???

Deine SQL-Abfrage ist falsch. "link" ist eine Zeichenkette. Um einen Wert damit zu vergleichen, musst du den zu vergleichenden Wert in einfache Anführungszeichen setzen.

Außerdem solltest du die Parameter, die du in einer SQL-Abfrage nutzt, maskieren: mysql_real_escape_string()

LG,
Xong

Delphi-Phil 1. Dez 2008 12:37

Re: mysql abfrage rückgabewert
 
danke für die info. aber irgendwie will es immer nochnicht.

ich habe hinter es werden keine daten mehr gefunden mal die variable hash ausgegeben.

teste mal bitte nochmal mit einem link! oder lass dir einen neuen senden...

DeddyH 1. Dez 2008 12:40

Re: mysql abfrage rückgabewert
 
Das sieht schonmal gut aus, es kommt nur noch der Hash. Aber Du weißt schon, dass man auf einem öffentlich erreichbaren System nicht testen sollte, oder? An Deiner Stelle würde ich mir XAMPP installieren, damit testen und im Anschluss alles hochladen.

Delphi-Phil 1. Dez 2008 12:40

Re: mysql abfrage rückgabewert
 
danke xong das du auch versuchst zu helfen.

hier nochmal der aktuelle code:
Code:
$link = $_SERVER["REQUEST_URI"];
$array = explode ( '/', $link );
$hash = $array[count($array) - 1];

$sql = "SELECT *FROM nl_anmeldungen WHERE md5wert = $hash";

$result = mysql_query($sql,$con);


if (mysql_num_rows($result))
{
    echo "<font color='#ff0000'>Daten gefunden!</font>
";
}
else
{
    echo "<font color='#ff0000'>Keine Daten gefunden!$hash</font>
";
}
wo soll ich hier genau maskieren!?!?!?

DeddyH 1. Dez 2008 12:42

Re: mysql abfrage rückgabewert
 
Folge doch einfach dem Link, den Xong gepostet hat, dann siehst Du es schon.

Delphi-Phil 1. Dez 2008 12:42

Re: mysql abfrage rückgabewert
 
stimmt schon das man nicht öffentlich erreichbar testen sollte, aber es stört mich im moment nicht wirklich;)

Genau in der variable steht nur noch der hashwert. irgendwie muss es doch dann jetzt an der sql abfrage hängen oder??

Delphi-Phil 1. Dez 2008 12:44

Re: mysql abfrage rückgabewert
 
Zitat:

Zitat von DeddyH
Folge doch einfach dem Link, den Xong gepostet hat, dann siehst Du es schon.

ich habe mir das angesehen, nur im moment geht es mit drum die sache erstmal zum laufen zu bringen und die sicherheit ist dann punkt zwei! es geht doch da nur um sicherheit oder??

DeddyH 1. Dez 2008 12:46

Re: mysql abfrage rückgabewert
 
SQL-Code:
$sql = "SELECT * FROM nl_anmeldungen WHERE md5wert = '$hash'";
Und damit? Nein, es geht nicht nur um Sicherheit, sondern auch um das Escapen von z.B. Hochkommata innerhalb des Strings.

[edit] Oder mussten das Accent Graves sein? Wäre auch noch einen Versuch wert.

SQL-Code:
$sql = "SELECT * FROM nl_anmeldungen WHERE md5wert = `$hash`";
[/edit]

dominikkv 1. Dez 2008 12:52

Re: mysql abfrage rückgabewert
 
SQL-Code:
$sql = "SELECT * FROM `nl_anmeldungen` WHERE md5wert = '$hash'";
echo $sql;
Diese Ausgabe kopierst du jetzt in PHPMyAdmin und führst dort die Abfrage durch. Dann weißt du ob der Fehler in der Abfrage oder im Quelltext ist

Delphi-Phil 1. Dez 2008 12:53

Re: mysql abfrage rückgabewert
 
JUBELSCHREI!!!!

:dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp:

Jetzt läuft es wie geschmiert!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz