Как отразить inner join на php?
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");
9 ответов
<?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>";
}
?>
$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>';
}
я даже не знаю че такое var_dump я новичок))
<?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);
?>
вот база успешно подключилась но данных нет(((
я поставила и тут убрала кавычки `descriptions` все рано данных нет к базе подключилась а данных нет
<?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();
?>
вместо localhost должно быть 127.0.0.1
Пробел должен быть:
`descriptions`INNER
var_dump - это почти тоже самое, что и print_r. Результат $query - это просто массив, который можно вывести через тот же print_r как здесь показано:
https://fructcode.com/ru/courses/php-and-mysql/interactive-multidimensional-arrays/