Как отразить inner join на php?

0

SELECT * FROM `descriptions` INNER JOIN movie ON descriptions.movie_id=movie_id  этот запрос работает на phpmyadmin

а когда  вызываю так на сайте нет данных
$query = $mysqli->query("SELECT * FROM `descriptions`INNER JOIN movie ON descriptions.movie_id = movie.id");

php
mysql

9 ответов

1
<?php

$mysqli = new mysqli ('localhost', 'root', '', 'kinomonster');

if (mysqli_connect_error()) {
print("Не удалось установить соединение");
exit();
}

$mysqli -> set_charset('UTF8');

$query = $mysqli ->query('SELECT * FROM movie INNER JOIN description ON movie.descriptions_id = description.id');

while ( $row = mysqli_fetch_assoc($query) ) {
echo $row['name']." - ".$row['year']." - ".$row['description']."<br>";
}


?>
1

$query через var_dump выводите?

<?php
  var_dump($query);
?>

Можно алиасы в select использовать, так как одинаковые данные есть в movie и descriptions

$query = $mysqli->query("SELECT movie.id as m_id, descriptions.id as d_id,  descriptions.name as d_name FROM `descriptions`INNER JOIN movie ON descriptions.movie_id = movie.id");

Потом в цикле $row['d_name'] - это descriptions поле name название фильма, если в базе называется name поле где хранятся фильмы.

Где-то здесь пример находил с categories и movies с использованием алиасов, себе сохранил:

$query = $mysqli->query('SELECT movie.id as mov_id, categories.id as cat_id, movie.name as mov_name, categories.name as cat_name, movie.year as mov_year, descriptions.id as des_id, descriptions.name as des_name FROM `movie`
LEFT JOIN categories ON categories.id = movie.category_id
LEFT JOIN descriptions ON descriptions.id = movie.description_id');

while ( $row = mysqli_fetch_assoc($query) ) {
    echo $row['mov_name'].$row['cat_name'].$row['mov_year'].$row['des_name'].'<br>';
}

0

я даже не знаю че такое var_dump я новичок))

0
<?php
$mysqli= new mysqli('localhost','root','','kinomonster');

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
if (!$mysqli) {
echo "Fehler: konnte nicht mit MySQL verbinden." . PHP_EOL;
echo "Debug-Fehlernummer: " . mysqli_connect_errno() . PHP_EOL;
echo "Debug-Fehlermeldung: " . mysqli_connect_error() . PHP_EOL;
exit;
}

echo "Erfolg: es wurde ordnungsgemäß mit MySQL verbunden! Die Datenbank \"datenbank\" ist toll." . PHP_EOL;
echo "Host-Informationen: " . mysqli_get_host_info($mysqli) . PHP_EOL;


$query = $mysqli->query("SELECT movie.id as m_id, descriptions.id as d_id, descriptions.name as d_name FROM `descriptions`INNER JOIN movie ON descriptions.movie_id = movie.id");


while ( $row = mysqli_fetch_assoc($query) ) {
echo $row['id'].$row['movie_id'].'<br>';
}
mysqli_close($mysqli);


?> 

вот база успешно подключилась но данных нет(((

0

я поставила и тут убрала кавычки  `descriptions` все рано данных нет к базе подключилась   а данных нет 

0
<?php 

    $mysqli = new mysqli('localhost', 'root', '', 'kinomonster');

    if(mysqli_connect_errno()) {
        prinf("Соеденение не установлено", mysqli_connect_error());
        exit();
    }

    $mysqli->set_charset('utf8');

    $query = $mysqli->query('SELECT * FROM descriptions INNER JOIN movie ON movie.descriptions_id = descriptions.id');

    while ( $row =mysqli_fetch_assoc($query) ) {
        echo $row['name'].","." ".$row['year'].","." ".$row['descriptions'].","." ".$row['category_id']."<br>";
    }

$mysqli->close();

?>
0

вместо localhost должно быть 127.0.0.1

0

Пробел должен быть:

 `descriptions`INNER
0

var_dump - это почти тоже самое, что и print_r. Результат $query - это просто массив, который можно вывести через тот же print_r как здесь показано:

https://fructcode.com/ru/courses/php-and-mysql/interactive-multidimensional-arrays/

Sign up or Log in to write an answer