Diskuze: Multiselect
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zdar,
mohl bys prosim hodit
echo "<pre>";
var_dump($result->fetchArray());
nejsem si totiž jistý, jak to tam hází ty stejnojmenné sloupce
Vyhadzuje mi to takúto chybu:
Call to a member function fetch_array() on boolean in
Ak dám len $row[0] a $row[1], tak to funguje, ale akonáhle tam dám 3 výsledky, tak mi to zlýha.
Pak proměnná $result obsahuje FALSE, což by mělo házet v případě, že máš chybu v SQL dotazu
ale keď ho skúsim cez MySQL tak mi to nehlási žiadnu chybu.
Co máš v proměnné $vyberHerec?
Takto je to teraz:
$mysqli = new mysqli("localhost", "sledovac", "kukuc", "lakomika");
$vyber1 = "SELECT prog_datum, nazov, popis "
. "FROM program as p"
. "JOIN (SELECT nazov, popis, id_show FROM shows) as s"
. "on s.id_show = p.id_show ";
$result = $mysqli->query($vyber1);
while( $row = $result->fetch_array(MYSQLI_NUM)){
$i=1;
if($i>1){echo "<tr>".PHP_EOL;}
printf( "<td>".$row[0]."</td>"."<td>".$row[1]." ".$row[2]."</td>");
if($i>1){echo "</tr>".PHP_EOL;}
$i++;
Tu premennú som chcel rozdeliť na dve, ale nakoniec som sa rozhodol, že to nemá asi valný zmysel
Teď jsem se trochu zamotal
Když teda uděláš
$result = $mysqli->query($vyber1);
a za to hodíš
echo "<pre>";
var_dump($result->fetch_array(MYSQLI_NUM));
exit;
co ti to vyplivne?
Případně místo toho MYSQLI_NUM nech data uložit do asociativního pole.
Fatal error: Call to a member function fetch_array() on boolean in ... on line 54
toto je na riadku 54
var_dump($result->fetch_array());
A ten while ti jinak normálně funguje?
Ak tam dám len 2 výsledky, tak hej, ale 3 už neberie. Nemôže byť aj to "oná komplikácia"?
Co máš přesně na mysli tím "výsledky"?
Přijde mi to nějaký zvláštní... mysqli::query() vrací FALSE při
neúspěchu. Při SELECT statements to vrací objekt třídy mysqli_result.
Když funguje
while ($row = $result->fetch_array())
pak musí fungovat i
var_dump($result->fetch_array());
zkus ještě po tom query dotazu hodit
echo $mysqli->error;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT nazov, popis, id_show FROM shows) as son s.id_show = p.id_show' at line 1
Fatal error: Call to a member function fetch_array() on boolean in
C:\xampp\htdocs\LaKomika\subs\program.php on line 52
>
Toto už vyzerá lepšie
"výsledky" sú prog_datum, nazov, popis neviem ako správne nazvať
Mám to ďakujem moc za pomoc
celý zdroják má vyzerať takto :
$vyber1 = "SELECT p.prog_datum, s.nazov, s.popis, s.id_show
FROM program as p
JOIN (SELECT nazov, popis, id_show FROM shows) as s
on s.id_show = p.id_show ";
$result = $mysqli->query($vyber1);
echo $mysqli->error;
$i=1;
while( $row = $result->fetch_array(MYSQLI_NUM)){
if($i>1){echo "<tr>".PHP_EOL;}
echo"<td>".$row[0]."</td>".PHP_EOL;
echo "<td>".$row[1]."</td>".PHP_EOL;
echo "<td>".$row[2]."</td>".PHP_EOL;
if($i>1){echo "</tr>".PHP_EOL;}
$i++;
}
taká drobnosť, ten select bralo ako jeden riadok keď som odstránil spojenia
"."
"SELECT prog_datum, nazov, popis "
. "FROM program as p"
. "JOIN (SELECT nazov, popis, id_show FROM shows) as s"
. "on s.id_show = p.id_show ";
tak to šlo. Dík aj za
echo $mysqli->error;
Konečne som našiel to, čo robilo "čurbes"
A když takhle stejný dotaz hodíš rovnou do DB třeba přes adminer, tak
to jde?
Neznám nazpaměť přesné způsoby použití JOIN, ale to "as s" bych zkusil
hodit ještě do tý závorky.
Případně to napsat nějak takto
SELECT p.prog_datum, p.nazov AS nazevProgramu, p.popis AS popisProgramu, s.nazov AS nazevShows, s.popis AS popisShow, s.id_show
FROM program AS p
LEFT JOIN shows AS s ON p.id_show = s.id_show
ale radši ať ti to zodpoví někdo zkušenější
Zobrazeno 16 zpráv z 16.