Portál AbcLinuxu, 8. května 2024 23:48


Dotaz: PHP varování: expects parameter 1 to be mysqli...

derddddd avatar 14.11.2005 18:57 derddddd | skóre: 4 | blog: lama_log | Pisek
PHP varování: expects parameter 1 to be mysqli...
Přečteno: 792×
Odpovědět | Admin
Chyba začátečníka,ale jsem zacatecnik, presto hledal sem, googlil sem, oficialni manual s fcemi mysli_fetch_array() a mysqli_free_result() sem taky prosel, ale reseni sem nenasel. Ze sameho zoufalstvi sem okopiroval demo z php.net manualu a stejnak to vraci chybova hlaseni.

Zde jsou hlaseni:
1)mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in ..cesta ke skriptu in line 5
2)mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in ...cesta ke skriptu in line 8

Zde je kód i s radkovanim:
01 <?php
02 $query="SELECT model_auta, nazev_modelu, nazev_vyrobce_id   FROM tb_auto, tb_model WHERE tb_auto.model_auta=tb_model.id_model AND tb_model.nazev_vyrobce_id=tb_vyrobce.id_vyrobce";
03 $result = mysqli_query($link, $query);
04 /* associative and numeric array */
05 $row = mysqli_fetch_array($result, MYSQLI_BOTH);
06 printf("%s (%s)\n", $row[0], $row["model_auta"]);  
07 /* free result set */
08 mysqli_free_result($result);
09 /* close connection */
10 mysqli_close($link);
11 ? >
KDE JE CHYBA? Prosim o radu, nebo nasmerovani na link, kde zjistim jak dale. DIK
Snad se tady neztratím...:))
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

derddddd avatar 14.11.2005 19:18 derddddd | skóre: 4 | blog: lama_log | Pisek
Rozbalit Rozbalit vše Re: PHP varování: expects parameter 1 to be mysqli...
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro upreseni jedu na:

apache 2.0.55
mysql 4.1.14
php 5.0.5
Snad se tady neztratím...:))
14.11.2005 19:29 hudin | skóre: 7
Rozbalit Rozbalit vše Re: PHP varování: expects parameter 1 to be mysqli...
Odpovědět | | Sbalit | Link | Blokovat | Admin
A $link i nejak nastavujete? (Tedy, pripojujete se k db?)
derddddd avatar 14.11.2005 20:30 derddddd | skóre: 4 | blog: lama_log | Pisek
Rozbalit Rozbalit vše Re: PHP varování: expects parameter 1 to be mysqli...
ano pres mysqli_connect($host, $user, $pass, $db), kde $host je localhost, $db je db_auta ostatni sou prazdny
Snad se tady neztratím...:))
derddddd avatar 14.11.2005 23:15 derddddd | skóre: 4 | blog: lama_log | Pisek
Rozbalit Rozbalit vše Re: PHP varování: expects parameter 1 to be mysqli...
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedna důležitá rada pro newbies jako já! Každá fce "musí" být ošetřena, hnedle jak píšete kód, alespoň ze začátku než získáte jistotu... Proč? PHP vám vráti hlášku o chybě a vy alespoň budete vědět, kde ji hledat.... Jako JÁ:)! Zde je oprava:
1)doopravil sem syntaxi fce mysqli_query() o attribut - resultmode.
2)již zmiňované ošetření chyb pomocí if...else
$query="SELECT nazev_modelu, nazev_vyrobce, id_vyrobce FROM tb_model, tb_vyrobce WHERE 
tb_model.vyrobce_id=tb_vyrobce.id_vyrobce ORDER BY tb_vyrobce.nazev_vyrobce";
if(!$query)
{
   echo "Špatně napsaný dotaz do databáze";
   exit();
}
else
    {
 	   $result=mysqli_query($link, $query, MYSQLI_STORE_RESULT);
	   if(!$result)
	   {
	      echo "Neproveden dotaz do databáze";
		  exit();
	   }
	   else
	       {		   
                $vyrobce="Výrobce: <br />";
		$model="<strong>Model</strong>:";			
    		echo $vyrobce;	
               /* načti $result do asociativního pole */
		while ($row=mysqli_fetch_assoc($result))
		   {	                   			   
                    $data ="" .$row["nazev_modelu"]. "\n";
		    echo $model .$data. "<br />";			               }  
	       }
   /* free result set */
   mysqli_free_result($result);
}
/* close connection */
mysqli_close($link);					   
?>
Určitě to ještě není to pravé, ale hlášky o očekávání parametru "to be mysqli" jsou pryč. Má chyba byla již v $query, kde byl špatně napsán název sloupce...:) Takže kód nedošel ani k $result, a teď jestli se mýlim, tak bych rád, aby mne někdo opravil - nedošlo k naplnění proměnné $result, a poté tedy i nebylo co čistit ...free_result($result), proto ty chybové hlášky.
Snad se tady neztratím...:))
15.11.2005 12:03 miso
Rozbalit Rozbalit vše Re: PHP varování: expects parameter 1 to be mysqli...
if(!$query)
toto podla mna nema vyznam, nic tym nezistis
derddddd avatar 16.11.2005 11:36 derddddd | skóre: 4 | blog: lama_log | Pisek
Rozbalit Rozbalit vše Re: PHP varování: expects parameter 1 to be mysqli...
Ano, chyba byla odhlalena az v $result "Neproveden dotaz do databáze". hm... poopravim to! dik
Snad se tady neztratím...:))
16.11.2005 14:57 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: PHP varování: expects parameter 1 to be mysqli...
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, Taky si trošku s PHP a MySQL hraju a používám 2 způsoby, jak chybu ošetřít:
$result = mysql_query($sqlstring) or die (mysql_error()." -> ".$sqlstring)
případně pokud není nutno skript zastavovat, místo
die(...)
použiju
or $sqlerror.= .. totéž co v die...+"\n" 
a na závěr
if ($sqlerror) {
   alert($sqlerror);
   }
funkce alert vytvoří javaskript s alertem, a tak se síce nic nevypíše, ale nakonec vyskočí okno se správou. Někdy se to hodí.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.