mysql_query viel auslesen

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

mysql_query viel auslesen

Postby insane.eye » 05. February 2005 22:25

hallo hab da mal ne frage :)

kenn mich mit mysql noch nich so gut aus...

ich möchte ne menge zeilen nach einer bestimmten reihenfolge auslesen, welche aber durch ids gefiltert werden (mehr zeilen als im beispiel).
hab das jetzt mal so gemacht:

Code: Select all
#$id = array(2,7,6,4,5,3,44,9,22,1);

$str = " id=".$id[0];
   
for($i = 1; $i < count($id); $i++)
{
    $str .= " or id=".$id[$i];
}

$q = mysql_query("select * from tabelle where ".$str);

nun hab ich festgestellt das die reihenfolge der where-klause nicht beachtet wird... :(

ich könnte natürlich danach per array sortieren oder jede zeile einzeln mit jeweils einer id-beschränkung per for-schleife auslesen. aber da gibts bestimmt nen schöneren weg, kann mir jemand helfen ??

danke !!

mfg eye
insane.eye
 
Posts: 8
Joined: 16. January 2005 01:19

Postby DJ DHG » 05. February 2005 22:53

Moin Moin

Frei aus´m Kopf.

Code: Select all
$q = mysql_query("select * from tabelle where = '$str'");


mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby Wiedmann » 06. February 2005 00:03

nun hab ich festgestellt das die reihenfolge der where-klause nicht beachtet wird...

Eine definierte Reihenfolge erreicht man in SQL mit "ORDER BY". "WHERE" sagt nur aus, welche Bedingung ein Datensatz erfüllen muss, damit er selektiert wird.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Jan H. Krüger » 06. February 2005 02:10

Nun ja Wiedmann, aber das ORDER BY bringt ihm doch nur etwas wenn er er die Datensätze aufsteigend und absteigend sortiert haben möchte. So wie ich ihn verstanden habe möchte er sie in der Reihenfolge ausgelesen haben möchte wie er sie auch im Array angegeben hat.
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby Wiedmann » 06. February 2005 10:23

Ups :oops:

Hast recht Jan. Ich hätte mir den Code wohl genauer anschauen solllten. Da muss ich wohl nochmal drüber nachdenken...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Wiedmann » 06. February 2005 12:00

So, nach dem richtig aufwachen mal folgenden Vorschlag:
Code: Select all
<pre>
<?php
$id = array(2,7,6,4,5,3,44,9,22,1);

$link = mysql_connect('db_host', 'db_user', 'db_pass') or die(mysql_error());
mysql_select_db('db_name', $link) or die(mysql_error());

$result = mysql_query("
    SELECT *
    FROM `tab_name`
    WHERE `id` IN (".implode(',', $id).")
", $link) or die(mysql_error());

while ($row = mysql_fetch_assoc($result)) {
    $rows[$row['id']] = $row;
}

mysql_free_result($result);
mysql_close($link);

foreach ($id as $value) {
    echo var_dump($rows[$value]);
}

?>
</pre>
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby insane.eye » 07. February 2005 10:03

hehe genau das meinte ich !! :wink:

vielen vielen dank !! :D hat mir sehr geholfen !!

mfg eye
insane.eye
 
Posts: 8
Joined: 16. January 2005 01:19


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 4 guests