Lupuz.de: Artikel-Portal / Magazin

Zurück   Postpla.net - die Forum Community > PC, Internet und Technik > Coder's Area

SQL Abfrage leer

Anzeigen:

Antwort
 
Themen-Optionen Thema durchsuchen
RVD
Alt 27.08.2008, 13:26   #1
Standard SQL Abfrage leer

hi, mal ne doofe frage, was ist hier dran falsch:

Code:
   $res10 = mysql_query("SELECT * FROM `werbung_links` WHERE `werbung`='72890'");
   while($read10 = mysql_fetch_array($res10, MYSQL_ASSOC))
   {

      $texteintrag = $read10["text"];
      $linkeintrag = $read10["link"];
   }
ich weiß nicht, ob ich einen kleinen fehler hab, aber ich such mich irgendwie dämlich, weil beide variablen leer bleiben. die tabelle werbung_links gibt es und eben mit diesen spalten werbung, text und link und da steht auch was drin, das eintragen da rein funktioniert nämlich.
ob die bezeichungen mit 10 glücklich gewählt sind ist ja mal egal ^^ erstmal solls funktionieren.

danke schonmal
 
 
Nach oben
Registrierter PPler
Anonymisierungsmodus aktiv!
Alt 27.08.2008, 16:50   #2
Standard

mach mal die quotes um die 72890 weg. mysql mag meines wissens nach keine gequoteten zahlen die in der DB kein textfeld sind.
 
 
Nach oben
Alp.traum
Alt 29.08.2008, 10:51   #3
Standard

Zitat von OrionX Beitrag anzeigen
mach mal die quotes um die 72890 weg. mysql mag meines wissens nach keine gequoteten zahlen die in der DB kein textfeld sind.
Das wär mir neu, ich glaube nicht dass es daran liegt.

Es ist wichtig dass du nach jeder Query ein mysql_error() aufrufst. In der Form: (das die() ist natürlich optional)
PHP-Code:
$result mysql_query($query);
if(
$result) {
    while(
$row mysql_fetch_assoc($result)) {
         
print_r($row);
    }
} else {
    echo 
mysql_error();
    die();

Und beim Schreiben ist mir auch aufgefallen was wahrscheinlich der Fehler ist: mysql_fetch_assoc statt mysql_fetch_array benutzen, denn sonst haste keine assoziativen Arrays.

Übrigens damit man nicht nach jedem Query das ganze Konstrukt da oben schreiben muss um eventuelle MySQL-Fehler herauszufinden, sollte man das in eine kleine Klasse auslagern wo das nach jedem Query automatisch passiert.

print_r() ist dein Freund
 
 
Nach oben
Registrierter PPler
Anonymisierungsmodus aktiv!
Alt 29.08.2008, 11:19   #4
Standard

Das wär mir neu, ich glaube nicht dass es daran liegt.
Ich hatte das mit PDO schon ab und zu mal, aber kann sein das es beim normalen "mysql_query" nicht auftritt. generell ist so ein PDO aber eine sehr elegante variante.
 
 
Nach oben
Registrierter PPler
Anonymisierungsmodus aktiv!
Alt 29.08.2008, 12:46   #5
Standard

Also zu 100% weiss ich es auch nicht, aber dass mit dem Quotes ist wohl tatsächlich so.

Wenn die Spalte `werbung` nen Zahlen-Datentyp (bsp. Integer) is, die einfach mal weg lassen, müsste dann funktionieren.
 
 
Nach oben
Calli
Alt 29.08.2008, 15:17   #6
Standard

So sollte die Query aussehen

PHP-Code:
$res10 mysql_query("SELECT * FROM werbung_links WHERE werbung='72890'"); 
alternativ

PHP-Code:
$res10 mysql_query("SELECT * FROM werbung_links WHERE werbung='72890'") or die(mysql_error()); 
Ist nicht die schönste Art nen Fehler auszugeben, aber zum testen OK. Sonst mach mal var_dump($res10) um zu gucken was in der Variable ist.
 
 
Nach oben
Registrierter PPler
Anonymisierungsmodus aktiv!
Alt 29.08.2008, 16:36   #7
Standard

öhm kleine "schönheitsbelehrung": die mysql_* funktionen zu nutzen ist php4 style. Für Datenbankfunktionen sollte man das objektorientierte PDO benutzen, die mysql funktionen wirds nämlich auch irgendwann nicht mehr geben.

PDO ist ausser dem eleganzfaktor auch 1000 mal intuitiver und besser zu benutzen als der andere braddel.
 
 
Nach oben
Alp.traum
Alt 29.08.2008, 18:35   #8
Standard

Was ist denn an PDO so elegant im Gegensatz zu "normalen" MySQL-Wrapper-Klassen?
 
 
Nach oben
Registrierter PPler
Anonymisierungsmodus aktiv!
Alt 29.08.2008, 21:32   #9
Standard

- extrem minimierter portierungsaufwand, PDO funktioniert mit vielen weiteren datenbanken

- objektorientierung von haus aus

- methoden für transaktionen ungefähr so:

PHP-Code:

$connection
->beginTransaction();

try {

    
$connection->exec('INSERT....');

    
$connection->exec('UPDATE ....');

} catch (
Exception $e) {
    
$connection->rollback();
}

$connection->commit(); 
das ist mal eben aus dem kopf zusammengedacht, kann stellenweise nicht stimmen (die funktionen schon nur die reihenfolge / objekteigenschaften nicht) aber so sehen transaktionen mit PDO aus.

ordentliches selecten geht auch wunderbar:

PHP-Code:

$result 
$connection->query('
    select 
          blah,
          hallo
     from
          blubb
     where 
         blubb_id = ' 
$connection->quote($variablePDO::PARAM_INT)
);

while(
$element $result->fetch(PDO::FETCH_ASSOC) {
        echo 
$element['blubb'];

wenn du direkt alles haben willst geht auch:

PHP-Code:
$elements $connection->fetchAll(PDO::FETCH_ASSOC); 
ausserdem lässt sich PDO viel besser in objektorientierte geschichten intergrieren, wenn du ein results von mysql query verarbeiten musst kannst du nicht so einfach festlegen das es genau so ein mysql_query result ist. Das kann auch ne normale int zahl sein.

mit ner PDO connection machst du einfach:

PHP-Code:
class db_kram {
     private 
$connection null;

     public function 
__construct(PDO $connection) {
           
$this->connection $connection;
     }


gehts besser und einfacher? nein. ausserdem kannst du mit PDO sachen auch superfix iteratoren bauen und ne eigene kleine abstraktionsschicht.

Propel benutzt intern PDO. das ist nochmal objektorientierter als PDO.

Ist auch eine mehr standardkonforme api als die mysql funktionen
 
 
Nach oben
Alp.traum
Alt 30.08.2008, 01:01   #10
Standard

Ok das klingt schon nicht schlecht. Ist jedenfalls krass was man alles nicht kennt was eigentlich schon in PHP integriert ist.
 
 
Nach oben
Registrierter PPler
Anonymisierungsmodus aktiv!
Alt 30.08.2008, 20:04   #11
Standard

Zitat von Alp.traum Beitrag anzeigen
Ok das klingt schon nicht schlecht. Ist jedenfalls krass was man alles nicht kennt was eigentlich schon in PHP integriert ist.
mit PHP 5 hat man sich ja auch bei PHP extrem umorientiert. mit 5.3 wirds namespaces können, mit version 6 auch von haus aus unicode, bis dahin geht das mit der mb_string erweiterung.

PHP kann so einiges, aber wir wollen ja nicht abschweifen besser mal warten das der threadersteller sagt, worans nun lag.
 
 
Nach oben
Ähnliche Themen, die dich vielleicht interessieren
Thema Autor Forum Antworten Letzter Beitrag
MS SQL Server 2003 Feiermeister Betriebssysteme und Software 0 17.11.2006 13:22
SQL wo braucht man es ?! golf16v Coder's Area 8 31.08.2005 14:50
SQL Abfrage unter access DB chimaira Coder's Area 3 01.12.2004 10:36
Batchdateierstellung mit Abfrage! Bjoern Coder's Area 1 21.12.2003 22:25
Access und SQL? fox Betriebssysteme und Software 0 01.02.2001 23:09
Anzeigen:
Antwort

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.


Lupuz.de - wir können auch anders!
©1998 - 2009, Lupuz:Information-Network
Powered by vBulletin Version 3.7.1 (Deutsch), Jelsoft Enterprises Ltd.
Grüne Links?

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.