Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]czytanie tablicy za pomocą foreach
zetor
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.11.2011

Ostrzeżenie: (0%)
-----


Witam znalazłem gdzieś taką sprytną metodę do tworzenia zapytań sql:
  1. static public function selectData($TABLE, $COLUMNS = Array("*"), $WHERE = Array(), $LOGIC_OPER = "=", $OPER = "AND") {
  2.  
  3. $conn = self::getConnection();
  4.  
  5. $SQL = "SELECT ";
  6.  
  7. if(count($COLUMNS) == 1) {
  8. $SQL .= $COLUMNS[0];
  9. } else {
  10. foreach($COLUMNS as $column) {
  11. $SQL .= $column.",";
  12. }
  13. }
  14.  
  15. $SQL = rtrim($SQL, ',');
  16.  
  17. $SQL .= " FROM {$TABLE}";
  18.  
  19. if(count($WHERE) > 0) {
  20.  
  21. $SQL .= " WHERE ";
  22.  
  23. foreach($WHERE as $key => $val) {
  24. $SQL .= $key.$LOGIC_OPER."'".$val."' ".$OPER." ";
  25. }
  26.  
  27. $SQL = substr($SQL, 0, strlen($SQL)-(strlen($OPER)+2));
  28.  
  29. }
  30.  
  31. $result = $conn->query($SQL);
  32.  
  33. if(!$result) {
  34.  
  35. LogFile::AddLog("Wystąpił błąd połączenia z bazą danych!", __LINE__, __FILE__);
  36. return false;
  37.  
  38. } else {
  39.  
  40. $resultArray = Array();
  41.  
  42. while(($row = $result->fetch_array(MYSQLI_ASSOC)) !== NULL) {
  43.  
  44. $resultArray[] = $row;
  45. }
  46.  
  47. }
  48.  
  49. if(count($resultArray) > 0) {
  50. return $resultArray;
  51. } else {
  52. LogFile::AddLog("Zapytanie bazodanowe zwróciło pusty wynik!", __LINE__, __FILE__);
  53. return false;
  54. }
  55.  
  56. mysqli_close($conn);
  57.  
  58. }


i jej wywołanie:
  1. print_r(DatabaseManager::selectData("users",array("username","id"),array("id" => "2"), ">"));

Metoda selectData tworzy zapytanie SELECT id, username FROM users WHERE id > 2
natomiast ja chcę zrobić coś takiego SELECT id, username FROM users WHERE id > 2, id<5
czyli takie wywołanie:
  1. print_r(DatabaseManager::selectData("users",array("username","id"),array("id" => "2","id" =>"5"), ">","<"));

I teraz nie wiem jak z czytać za pomocą foreach te klucze id w metodzie selectData (linie kodu 23- 25) tak by dla pierwszego klucza id było coś takigo
  1. $SQL .= $key.$LOGIC_OPER."'".$val."' ".$OPER." ";

a dla drugiego id
  1. $SQL .= $key.$LOGIC_OPER2."'".$val."' ".$OPER." ";

(Dodałem $LOGIC_OPER2 = "=" dla drugiego znaku "<" do metody selectData.)
próbowałem to jakoś na if-ach robić, tylko jak odwołać się, że dla klucz o indeksie 0 dla którego ma wykonać się to pierwsze dopisanie $SQL a dla klucza i indeksie 1 (tego id drugiego) to drugie dopisanie
, próbowałem na różne sposoby, ale moja wiedza jest widocznie nikła .

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:29