Я пытаюсь сделать этот код работающим, но он работает только до тех пор, пока второе эхо-выражение echo "Finished 2";
,
<?php if (count($_GET) > 0){ $sql = "SELECT * FROM winery WHERE winery_name='".$_GET['winery_name']."'"; echo "Finished 1"; $result = $db->query($sql); echo "Finished 2"; $sql = "SELECT * FROM".$result."WHERE wine_type='".$_GET['wine_type']."'"; echo "Finished 3"; $result = $db->query($sql); echo "Finished 4"; $sql = "SELECT * FROM".$result.", wine_variety WHERE wine_id=wine_variety.wine_id"; echo "Finished 5"; $result = $db->query($sql); echo "Finished 6"; $sql = "SELECT * FROM".$result."WHERE variety_id='".$_GET['grape_variety']."'"; echo "Finished 7"; $result = $db->query($sql); echo "Finished all queries"; } ?>
Проблема, исходя из моего понимания, заключается в том, что sql не распознает $result
в качестве таблицы, но $result
сохраняет таблицу возврата из моего запроса. Как я могу заставить SQL использовать таблицу возврата из $result
в новый запрос?
Я думаю, что из вашей таблицы winery вы получаете другое имя таблицы ???
Если это так, вам нужно получить строку из результата $ result, а затем получить соответствующий столбец из таблицы winery (т.е. столбец с другим именем таблицы).
Лучшим вариантом BTW будет объединение двух таблиц.
Еще один момент, когда я думаю, что вы совершаете ошибку,
$sql = "SELECT * FROM".$result."WHERE wine_type='".$_GET['wine_type']."'";
должно быть
$sql = "SELECT * FROM ".$result." WHERE wine_type='".$_GET['wine_type']."'";
пространство между FROM & double quote и между двойной цитатой и WHERE
Чтобы получить winery_id из winary_name, вы можете написать свою HTML-форму, например
<select name="winary_id"> <option value="Winary ID HERE">Winary Name Here</option> // you can generate your dynamic options like this which will return id instead of name </select>