• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenbankabfrage mit String und variable

StefanF195

Neues Mitglied
Hallo,
ich möchte eine Datenbankabfrage machen bei der ein String mit einer Variable verbunden werden soll.
Bei der abfrage sollen alle inhalte geladen werden, von der Tabelle X (diese verändert sich ständig) und soll absteigend nach dar Spalte value sortiert werden.
das normale SQL soll so aussehen: SELECT * from gameX Order by value DESC

$inhalt=mysql_query("SELECT image FROM "game".$gamenum1. ORDER BY value DESC");
so sieht meine abfrage aus, gibt leider einen fehler aus.

Weiß jemand wo mein Syntax fehler liegt ?

Vielen Dank

Stefan
 
Also erstmal ist mysql_* deprecated und ich glaube bei PHP 7 sogar komplett entfernt wurden.
Also besser PDO oder mysqli_* verwenden

Und dein Fehler liegt an den "

PHP:
$inhalt=mysql_query("SELECT image FROM "game".$gamenum1. ORDER BY value DESC");

Der String geht nur bis "SELECT image FROM "
 
Jo, das mit mysql weiß ich, aber das wird erst später verändert, vielen dank für den Hinweis
Also iwie hab ich grad nen denkfehler.
wenn ich das so mache, gehts auch nicht:
PHP:
$inhalt=mysql_query(""SELECT image FROM "game".$gamenum1 ORDER BY value DESC"");
 
Ich empfehle dringends: Grundlagen lernen!

PHP:
$query = "SELECT
             `image`
            FROM
             `game" . $gamenum1 . "`
            ORDER BY
              `value` DESC";
             
$result = mysql_query($query)
   or die ("MySQL-Error: " . mysql_error());
 
vielen Dank für die schnelle Hilfe. Die zeichen hatte ich nicht mehr im Kopf ^^
eine kleine Frage habe ich noch.... Wie kann ich aus dem Array eine bestimmte zeile ausgeben lassen ?
ich hab das versucht, aber das geht nicht
PHP:
echo $inhalt['image'=>1];
und das geht auch nicht, das gibt immer nur einzelne Buchstaben aus:
PHP:
echo $inhalt['image'][1];
 
Hallo,

Du musst wirklich Grundlagen lernen und vor allem die offizielle Doku mal im Browser nebenher aufmachen. Der Rückgabewert von mysql_query() ist kein Array!

Weiterhin solltest Du mit der Umstellung auf MySQLi oder PDO nicht warten, denn wenn es erstmal läuft, ändert man gemeinhin nichts mehr!

Kurzes Beispiel, wie das in PDO aussehen würde:
PHP:
$oPdo = new PDO(
        'mysql:host=localhost;dbname=datenbank;charset=utf8'
        , 'benutzername'
        , 'passwort'
    );

$oStmnt = $oPdo->prepare( "SELECT image FROM game? ORDER BY value DESC" );
$oStmnt->bindParam( 0, $gamenum1, PDO::PARAM_INT );
$oStmnt->execute();

var_dump( $oStmnt->fetchAll() );

Ein kurzer Einstieg in PDO findest Du hier: http://www.php-rocks.de/thema/49-ein-kurzer-einstieg-in-pdo-und-prepared-statements.html

Gruß Arne
 
Hallo,

Natürlich kann man auch auf ein ORM ausweichen, aber ich denke das übersteigt den Wissenstand des TE.
Hier ging es in erster Line, sich von mysql_* zu trennen.

Gruß Arne
 
Also erstmal vielen Dank für Eure Antworten.
Also, dass nen query nicht nen Array liefert ist mir bewusst, aber mysql_fetch_assoc..
Desweiteren geht es hier nicht um eine Umstellung. Das die Nutzung von PDO standard ist, ist mir bewusst, tut hier aber nichts zur Sache.
Also nochmal meine Frage, wenn ich ein assoziatives Array geschaffen habe (mysql_fetch_assoc) , mit einer while Schleife alle Zeilen ausgeben lasse, wie kann ich eine bestimmte Zeile aufrufen ?

Ich hoffe ich habe mich vllt ein wenig klarer ausgefrückt.
P.S. Bitte diese Zeilen nicht böse aufnehmen, aber ich habe keine Lust das Thema PDO durchzukauen, weil es darum nicht geht.
 
Mach doch mal ein var_dump() um deinen Array und schau was dir zurück gegeben wird. Dann weißt du auch was du ansprechen musst, um deinen gewünschten Wert zubekommen.
 
Also nochmal meine Frage, wenn ich ein assoziatives Array geschaffen habe (mysql_fetch_assoc) , mit einer while Schleife alle Zeilen ausgeben lasse, wie kann ich eine bestimmte Zeile aufrufen ?
In einem Array gibt es keine Zeilen.

Und wenn du aus der Datenbank nur einen bestimmten Datensatz haben willst, dann nutze where

Ich bin mir allerdings nicht ganz sicher, was du überhaupt vor hast und was du von uns wissen willst.
 
Also erstmal vielen Dank für Eure Antworten.
Also, dass nen query nicht nen Array liefert ist mir bewusst, aber mysql_fetch_assoc..
Dann postest Du falschen Code, denn in Deinem Code greifst Du $inhalt von mysql_query() ab und willst mit $inhalt[] darauf zugreifen! Warum, wenn Du doch weisst, dass das nicht geht???

Ausserdem sehe ich kein einziges mal mysql_fetch_assoc() in Deinen Beiträgen...
Wenn wir helfen sollen, musst Du schon zeigen, was Du wirklich gecodet hast.

Das die Nutzung von PDO standard ist, ist mir bewusst, tut hier aber nichts zur Sache.
Nein, PDO ist nicht Standard, nur beliebt eben.

Also nochmal meine Frage, wenn ich ein assoziatives Array geschaffen habe (mysql_fetch_assoc) , mit einer while Schleife alle Zeilen ausgeben lasse, wie kann ich eine bestimmte Zeile aufrufen ?

P.S. Bitte diese Zeilen nicht böse aufnehmen, aber ich habe keine Lust das Thema PDO durchzukauen, weil es darum nicht geht.
Wer sich aktuell nicht von mysql_* trennt, nur weil keine Lust besteht, sich durch die Alternativen zu kauen, zeigt eine gewisse Beratungsresistenz, die ich persönlich nicht weiter unterstütze.

Sorry, bin raus...
 
Ok, also ich postet nochmal kurz den code
PHP:
$inhalt=mysql_query("SELECT image FROM `game".$gamenum2."`  ORDER BY `value` DESC ");
while($row= mysql_fetch_assoc($inhalt)) {
      echo $row['image'=>1];
}
damit lese ich ja alle Zeilen von der Spalte image aus.
Ich möchte jetzt explizit die erste Zeile davon ausgeben. Das war eigentlich die Ursprüngliche Frage :D

PHP:
  1. echo $inhalt['image'=>1];
und das geht auch nicht, das gibt immer nur einzelne Buchstaben aus:
PHP:
  1. echo $inhalt['image'][1];
Das Hatte ich probiert, weil ich es so in den Foren gefunden habe, aber das klappt iwie nicht.
 
Und warum selektierst du dann alle Zeilen aus der Datenbank?

Vielleicht meinst du ja sowas (für den Fall, dass du doch alle Datensätze brauchst)

PHP:
$images = array();

$inhalt=mysql_query("SELECT `image` FROM `game".$gamenum2."`  ORDER BY `value` DESC ")
   or die ("MySQL-Error: " . mysql_error());
   
while($row= mysql_fetch_assoc($inhalt))
      $images[] = $row['image'];

if (count($images))
  echo $images[0];
else
  echo "Nix in der DB gefunden";
 
Puh, Leute, ja, ich habe vorher den Coce nicht gepostet, dass ist richtig. Das aus einer SQL Abfrage nicht gleich ein Array entsteht dachte ich, sei wohl klar.
Also hier nochmal.
PHP:
$skin=mysql_query("SELECT image FROM `game".$gamenum2."`  ORDER BY `value` DESC 8");
while($skina = mysql_fetch_assoc($skin)) {
    $images=$skina['image'];
    echo $images[0];
Das ist der Code. Leider gibt er mir nicht die erste Zeile von `image` aus.

Und nochmal zum Beitrag von Herrn Drews. Du weißt null wofür das ganze ist, bzw warum das gemacht wird und wenn ich explizit sage, dass ich weiß, dass PDO besser ist, dann brauch ich keine Klugscheißer, die mir was von Beratungsresistent erzählen wollen.

Vielen Dank diesbezüglich..
 
Puh, Leute, ja, ich habe vorher den Coce nicht gepostet, dass ist richtig. Das aus einer SQL Abfrage nicht gleich ein Array entsteht dachte ich, sei wohl klar.
Also hier nochmal.
PHP:
$skin=mysql_query("SELECT image FROM `game".$gamenum2."`  ORDER BY `value` DESC 8");
while($skina = mysql_fetch_assoc($skin)) {
    $images=$skina['image'];
    echo $images[0];
Das ist der Code. Leider gibt er mir nicht die erste Zeile von `image` aus.

Und nochmal zum Beitrag von Herrn Drews. Du weißt null wofür das ganze ist, bzw warum das gemacht wird und wenn ich explizit sage, dass ich weiß, dass PDO besser ist, dann brauch ich keine Klugscheißer, die mir was von Beratungsresistent erzählen wollen.

Vielen Dank diesbezüglich..
Poste mal bitte deine Debugausgabe..
 
Zurück
Oben