/ / Jak mogę ustawić wiele zmiennych zgodnie z ich odpowiednimi wartościami? [closed] - php, mysql, tablice, zmienne

Jak ustawić wiele zmiennych do ich odpowiednich wartości? [zamknięty] - php, mysql, tablice, zmienne

Moja instrukcja sql zwraca tablicę 2 kluczy asocjacyjnych, w górę iw dół.

query = "SELECT `up`,`down` FROM `records` WHERE `id`=id"

czy w jeden sposób mogę ustawić obie zmienne, takie jak:

$up, $down = "SELECT `up`,`down` FROM `records` WHERE `id`=id"

tak, że góra i dół przyjmą odpowiednie wartości?

Odpowiedzi:

2 dla odpowiedzi № 1

Jeśli po wywołaniu SQL otrzymasz tablicę asocjacyjną taką jak ta:

array(
"up" => "foo",
"down" => "bar"
);

Następnie możesz użyć extract() aby uzyskać zmienne $up i $down.

Więc możesz to zrobić:

// no need to initialize $up and $down

extract(exec_query()); // asusming exec_query() returns the assoc array defined above
echo $up;  // will print "foo"
echo PHP_EOL;
echo $down;  // will print "bar"

PS - Chociaż można to zrobić, jest to naprawdę złe z punktu widzenia czytelności i zdecydowanie odradzam.


3 dla odpowiedzi № 2

Wartość zwracana z mysqli::query() nie jest natychmiast tablicą asocjacyjną, ale „zestawem wyników”. A jeśli zapytanie nie powiedzie się, nawet tego nie otrzymasz, ale FALSE. Więc kiedy możesz to zrobić

list($up, $down) = $db->query ("SELECT up, down FROM records WHERE id="id";")->fetch_all();

nie pozwala to sprawdzić, czy zapytanie rzeczywiście działało, więc lepiej go rozdzielić.


1 dla odpowiedzi nr 3

list() pozwala przypisać wiele wartości z jednego wywołania funkcji, jednak w twoim przypadku musisz również wykonać zapytanie i pobrać dane z serwera bazy danych.

Na przykład:

list($up, $down) = mysqli_fetch_array($queryResult, MYSQLI_ASSOC);