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

SELECT Abfrage mit Array als WHERE Bedingung ?

lokoroko

Mitglied
Hallo,

hier kurz mein Code:
Code:
foreach ($array as $result => $value)
   
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'raumzeit');
$sql = "SELECT * FROM bildtabelle WHERE path = '$result";
$profil = $pdo->query($sql)->fetch();
echo $profil['profilbild'];

Kennt einer von euch eine Möglichkeit mit der ich als WHERE Bedingung ein Array verwenden kann ?

Ich habe aktuell nämlich folgendes Problem:
Alle Werte in meinem Array ($array) werden ja über $result ausgegeben. Doch verwende ich das ganze als WHERE Bedingung dann will das ganze nicht funktionieren. Schreibe ich aber einen möglichen Wert von $result aus, bspw. WHERE path = "upload/bild_user29Lifestyle4.jpg". Dann zeigt er mir das ganze auch an aber halt nur für den einen Wert.

Es muss doch auch möglich sein eine solche Abfrage für mehrere Werte die in einem Array enthalten sind zu machen ?

Ich möchte am Ende für jedes existierende $result ein unter Umständen anderes $profil['profilbild'] :)
 
Werbung:
PHP:
<?php
   $array= array_map(create_function('$value', 'return "`path`=\'$value\'";'), $array);
   
   $query = "Select * from `bildtabelle` where " . implode(" or ", $array);
   
   echo $query;
?>
 
Werbung:
Hey also erstmal schon mal vielen Dank :) das ist im Prinzip genau das wonach ich gesucht habe. Doch eine Sache würde ich noch ganz gerne ändern falls es möglich wäre und zwar folgendes:

Wenn ich $query ausgebe dann sehe ich das hier:
SELECT * FROM bildtabelle WHERE `path`='1494443539' or `path`='1494158236' or `path`='1493306844' or `path`='1486925889' or `path`='1484159801' or `path`='1483388831' or `path`='1481462281' or `path`='1481462252' or `path`='1481128748' or `path`='1479244485' or `path`='1479244438'

Das ist im Prinzip auch genau das was ich wollte doch gerade wird ja noch nach $value gesucht. Mögliche Werte für $value sind in der Tat die da stehenden Zahlenabfolgen. Mir wäre es aber lieber wenn da die möglichen Werte von $key drin stehen würden.

bspw. so:
`path`='upload/bild_user29Lifestyle4.jpg' or `path`='upload/bild_user29Lifestyle6.jpg' or usw.

Wenn ich auf meiner Website $key ausgebe dann kommen auch die Dateipfade. Wieso funktioniert das nicht wenn ich in dem Code $value zu $key umändere ?

Hier nochmal der jetzige Code:
Code:
<?php
foreach ($array as $key => $value)
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$array= array_map(create_function('$value', 'return "`path`=\'$value\'";'), $array);
$query = "SELECT * FROM bildtabelle WHERE " . implode(" or ", $array) ;
echo $query;
?>
 
Also ich habe mir das ganze jetzt mal angeschaut. Muss ehrlich gesagt sagen das ich die Funktion nicht zu 100% verstehe aber ich habe mich trotzdem mal daran versucht und dabei diesen Code geschrieben:
Code:
<?php
function myfunction($value,$key)
{
echo "The key $key has the value $value<br>";
}
$array= array_map(create_function('$key', 'return "`path`=\'$key\'";'), $array);
array_walk($array,"myfunction");
?>

doch leider weiß ich nicht inwiefern ich das ganze für meinen eigentlich Code benutzen kann. Ich bin mir auch nicht sicher ob die Variable $array in dem Code so ganz richtig ist...


Es wäre wirklich sehr nett wenn mir einer von euch erklären könnte wie ich die Funktion array_walk für meinen Code verwenden könnte.
Code:
<?php
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$array= array_map(create_function('$value', 'return "`path`=\'$value\'";'), $array);
$query = "SELECT * FROM bildtabelle WHERE " . implode(" or ", $array) ;
echo $query;
?>

Ein einfacher Austausch von array-map und array_walk macht ja keinen Sinn...
 
Werbung:
PHP:
<?php
  array_walk($array, create_function('&$value, $key', '$value = "`path`=\'$key\'";'));
  $query = "SELECT * FROM bildtabelle WHERE " . implode(" or ", $array) ;
  echo $query;
?>
 
Hey super vielen Dank das ist genau das was ich gebraucht habe !!! :) Doch ein Problem hat sich jetzt wieder ergeben und zwar habe ich das ganze direkt ausprobiert. Der Code schaut nun so aus:
Code:
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
 array_walk($array, create_function('&$value, $key', '$value = "`path`=\'$key\'";'));
  $query = "SELECT * FROM bildtabelle WHERE " . implode(" or ", $array) ;
  $stmt = $pdo -> query($query);
$resultat = $stmt -> fetch();
echo $resultat["profilbild"];

Wieso werden mir nicht alle Ergebnisse für $resultat["profilbild"] angezeigt sondern nur der erste Eintrag in der Spalte ? Wenn ich $query ausgebe dann sehe ich doch das er eigentlich alle Einträge durchsucht...

Muss ich vielleicht alle Ergebnisse in einem Array speichern ?
 
Werbung:
Zurück
Oben