mysql

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Rubber

Betreff: mysql

BeitragSo, Feb 25, 2007 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
mal wieder ne frage....

kann ich bei ner abfrage von ner datenbank auch 2 kreterien überprüfen?

also zb: where id = 1 und where name = hans ???

wie geht das?
Wenn Gott mich schon liebt, dann dich erstrecht...

Jolinah

BeitragSo, Feb 25, 2007 19:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht fast genau so wie du es geschrieben hast, nur in Englisch Wink

Code: [AUSKLAPPEN]
WHERE id=1 AND name='hans'


Möglich ist auch OR, wenn zum Beispiel nur ein Kriterium zutreffen muss.
 

Rubber

BeitragSo, Feb 25, 2007 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
vom grundsatz her also so?

$abfrage = "SELECT name_insel FROM inseln WHERE a-koordinate LIKE '$i' AND WHERE b-koordinate LIKE '$j'";

is nur, weil lauter fehler angezeigt werden....

kann aber auch was anderes sein...

hab jetzt mal die fehler stelle:

$abfrage = "SELECT name_insel FROM inseln WHERE a-koordinate LIKE '$i' AND WHERE b-koordinate LIKE '$j'";

$ergebnis = mysql_query($abfrage);

while($row = mysql_fetch_object($ergebnis)){

wobei die letzte zeile mit fehler code (Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/rubbernb/inseln.php)
angegeben wird.
Wenn Gott mich schon liebt, dann dich erstrecht...

Wild-Storm

BeitragSo, Feb 25, 2007 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Er schrieb:

Code: [AUSKLAPPEN]
Where lalala=a AND lalala=b


Du hast geschrieben:

Code: [AUSKLAPPEN]
$abfrage = "SELECT name_insel FROM inseln WHERE a-koordinate LIKE '$i' AND WHERE b-koordinate LIKE '$j'


Such mal den Fehler Wink
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875
 

Rubber

BeitragSo, Feb 25, 2007 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
danke....

jetz seh ichs...

nur der meldet immer noch den fehler....
Wenn Gott mich schon liebt, dann dich erstrecht...

hamZta

Administrator

BeitragSo, Feb 25, 2007 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreib
Code: [AUSKLAPPEN]
$ergebnis = mysql_query($abfrage) or die(mysql_error());
dann siehst du, was MySQL stört.

hamZta
Blog.
 

Rubber

BeitragSo, Feb 25, 2007 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
der meldet den fehler aber in dieser zeile:
while($row = mysql_fetch_object($ergebnis)){
Wenn Gott mich schon liebt, dann dich erstrecht...

hamZta

Administrator

BeitragSo, Feb 25, 2007 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich meldet er den Fehler in dieser Zeile.

Mit mysql_error() bekommst du allerdings den letzten Fehler, den MySQL ausspuckte.

hamZta
Blog.
 

Rubber

BeitragMo, Feb 26, 2007 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab den code mal als txt hochgeladen.... :

http://rubbernb.ru.funpic.de/inseln.php.txt

ich finde den fehler nicht...

kann mir wer helfen....
Wenn Gott mich schon liebt, dann dich erstrecht...

FOODy

BeitragMo, Feb 26, 2007 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Es könnte eventuell an den Spaltennamen liegen. (a-koordinate und b-koordinate)

Für mich sieht das aus wie "a MINUS koordinate" und "b MINUS koordinate".
Versuch es mal mit: `a-koordinate` und `b-koordinate`

Code: [AUSKLAPPEN]
$abfrage = "SELECT `name_insel` FROM `inseln` WHERE `a-koordinate` LIKE '$i' AND `b-koordinate` LIKE '$j'";

Ich persöhnlich würde mir die ` sofort angewöhnen. (Bei Tabellen- und Spaltennamen)


Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Farbfinsternis

BeitragMo, Feb 26, 2007 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ersmo: "a-koordinate" funktioniert nicht da SQL versucht eine Variable namens "koordinate" von einer anderen namens "a" abzuziehen.

Zweitens: Wenn Du die Werte nicht selektierst, kannst Du sie nicht vergleichen:
Code: [AUSKLAPPEN]

// Das funktioniert nicht :
SELECT id FROM tabelle WHERE a = 1 AND b = 1


Code: [AUSKLAPPEN]

// Aber das funktioniert :
SELECT id, a, b FROM tabelle WHERE a = 1 AND b = 1
Farbfinsternis.tv

FOODy

BeitragMo, Feb 26, 2007 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
@Farbfinsternis:
Farbfinsternis hat Folgendes geschrieben:
Zweitens: Wenn Du die Werte nicht selektierst, kannst Du sie nicht vergleichen:
Code: [AUSKLAPPEN]
// Das funktioniert nicht :
SELECT id FROM tabelle WHERE a = 1 AND b = 1


Code: [AUSKLAPPEN]
// Aber das funktioniert :
SELECT id, a, b FROM tabelle WHERE a = 1 AND b = 1


Man kann sehr wohl Spaltenwerte vergleichen ohne die Spalten selber zu selektieren.



Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
 

Rubber

BeitragMo, Feb 26, 2007 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ich danke für die vielen posts...

wenn ich also 'a-koordinate' verwende, sollte der fgehler nicht mehr bestehn....

oder ich ändere den namen gleich um....

ich dachte halt, mysql denkt nur, das es sich um variablen handelt, wenn $ davor ist.....

aber es scheint ja anders zusein...
Wenn Gott mich schon liebt, dann dich erstrecht...

FOODy

BeitragMo, Feb 26, 2007 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht ' sondern ` (SHIFT + Taste Links von Backspace + Leertaste).
Wenn du ' benutzt wird es als String erkannt Wink

Gruß,
FOODy


EDIT:
@Variable:
Die PHP Variablen die in Doppelten ausführungszeichen sind ( " ) werden geparsed.

Code: [AUSKLAPPEN]
$i = "FOODy";
Print "Hallo $i"; // Hallo FOODy
Print 'Hallo $i'; // Hallo $i
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
 

Rubber

BeitragMo, Feb 26, 2007 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ohoh...
son paare striche und so viele bedeutungen.... Rolling Eyes
Wenn Gott mich schon liebt, dann dich erstrecht...

Lunatix

BeitragMo, Feb 26, 2007 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ÖÖÖhm... denkt mal jemand an die Sicherheit ?!

Man schreibt nicht "SELECT boing FROM bla WHERE dings=$blubb"
Richtig wär 'SELECT `boing` FROM `bla` WHERE `dings`=\''.$blubb.'\';';

Sonst kann man da leicht ne komplette Datenbank zerstören/auslesen was auch immer Wink
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

FOODy

BeitragMo, Feb 26, 2007 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Meist sind die Server schon so eingestellt, dass MySQL Injection nur durch wirklich geniale Fehler möglich ist. (Automatisches Escapen von $_COOKIE, $_POST, $_GET, $_REQUEST)

Beispiel:
Wenn der benutzer eine Zahl eingeben muss würde die Abfrage mehr oder weniger so aussehen.
"SELECT boing FROM bla WHERE dings=$blubb"
Es werden keine ' bzw " benötigt da es um eine Zahl geht.
Es kann aber passieren das der benutzer keine Zahl eingibt.
Um ein MySQL Injection zu verhindern kann man davor einfach den Wert in ein Int-Wert umwandeln.
$blubb = (int)$blubb;
Oder
$blubb = intval($blubb);

Wenn man eine Zeichenkette vergleicht braucht man sich für gewöhnlich keine sorgen machen, da meißt automatisch escaped wird.
Notfalls kann man es auch manuell machen mit:
$blubb = addslashes($blubb);


Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
 

Nox

BeitragDi, Feb 27, 2007 1:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder 'mysql_real_escape_string()'.

BlitzChecker

BeitragMi, Feb 28, 2007 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte mal ne kleine Erklärung zu SQL-Injections geschrieben...
http://www.xairro.de/content/view/24/7/
www.xairro.com

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group