2013-07-17 13 views
5

Czy ktoś mógłby mi powiedzieć, dlaczego to robi praca, gdy starałem się przełączyć mój stary sql do sqli:Błąd krytyczny: Zadzwoń do niezdefiniowanej funkcji mysqli_result()

$query = "SELECT * FROM `product_category`"; 
$result = mysql_query($query, $connect) or die("could not perform query: " . mysql_error()); 
$num_rows = mysql_num_rows($result); 

for ($i=0; $i < $num_rows; $i++) 
{ 
    $ID = mysql_result($result,$i,"ID"); 
    $name = mysql_result($result,$i,"name"); 
    $description = mysql_result($result,$i,"description"); 

do:

$query = ("SELECT * FROM `product_category`"); 
$result = mysqli_query($connect, $query) or die("could not perform query"); 
$num_rows = mysqli_num_rows($result); 

for ($i=0; $i < $num_rows; $i++) 
{ 
    $ID = mysqli_result($result, "ID"); 
    $name = mysqli_result($result,$i,"name"); 
    $description = mysqli_result($result,$i,"description");` 

ciągle daje mi błąd: "Błąd krytyczny: wywołanie niezdefiniowanej funkcji mysqli_result()"

+0

Gdzie jest twój telefon do 'mysqli_error()'? Musisz przekazać zmienną połączenia do niej jako parametr. – andrewsi

+3

Nie ma funkcji 'mysqli_result()'. Możesz podać własne, aby emulować zachowanie funkcji 'mysql_result()', ale tak naprawdę nie chcesz tego robić. Lepiej iść z nowszym modelem i po prostu użyj wywołania funkcji 'mysqli_fetch_assoc()'. I nie ma potrzeby, aby uzyskać liczbę wierszy i pętlę for. Po prostu użyj pętli while. Funkcja 'mysqli_fetch_assoc()' zwróci FALSE, gdy nie będzie już żadnych wierszy do pobrania, wychodząc z pętli. Zobacz odpowiedź od Marca B. – spencer7593

Odpowiedz

12

Nie używaj tego rodzaju kodu. Jest wysoce nieefektywny. Użyj mysqli_fetch_assoc() zamiast:

while($row = mysqli_fetch_assoc($result)) { 
    $id = $row['ID']; 
    $name = $row['name']; 
    etc.. 
} 

jednej operacji bazy danych, zamiast 3+ starasz się zrobić.

+4

+1. Aby odpowiedzieć na pierwsze pytanie, jakie stwarzał OP, "powiedz mi, dlaczego to nie działa" ... powód, dla którego kod w pytaniu nie działa, polega na tym, że wywołuje nieistniejącą funkcję 'mysqli_result()' . Ta funkcja nie istnieje. – spencer7593

+0

Tak, ponieważ była to funkcja kretyńska w bibliotece mysql. –

+1

Hej teraz! :) Niektórzy z nas, moronicy, po prostu lubią funkcję kreacyjną, której możemy użyć, aby zrozumieć, że wszystko, co się zdarzyło, dzieje się za zasłonami. Chcę tylko mojej moronalnej wartości pola! (dzieci, dzieci) (widziałem implementację funkcji 'mysqli_result' ). – spencer7593

Powiązane problemy