У меня есть простая форма поиска, которая хорошо работает и дает результаты поиска на моей странице результатов поиска results1.php.
ОДНАКО, я не могу заставить эту страницу результатов правильно отображать идентификатор. Он просто повторяет «1» в качестве идентификатора значения для всех строк результатов. Но имена и любые другие данные, которые я хочу отображать, отражают правильное эхо. Почему не работает id? Это потому, что запрос не знает, какой идентификатор вернуть, потому что это запрос соединения? Я попробовал $ row ['casino.id'], но это тоже не сработало ...
Вот код:
//index.html page FORM
<form action = "results1.php" method = "GET">
<b>Store Type:</b><select name = "type">
<option value = "retail" selected>Retail
<option value = "wholesale">Wholesale
</select>
<br>
<b>Currenncy Choice:</b><select name = "currency">
<option value = "">Any
<option value = "bitcoin">Bitcoin
<option value = "Euros">Euros
<option value = "U.S. Dollars">US Dollars
</select>
<br>
</select>
<INPUT type = "submit" border = "0" value = "Submit" alt = "Submit">
</form>
//The results1.php page
$type = $_GET['type'];
$currency = $_GET['currency'];
$query = "(
SELECT * FROM stores
LEFT JOIN stores_banking SB ON stores.id=SB.stores_id
LEFT JOIN banking B ON SB.banking_id = B.id
LEFT JOIN stores_gaming SG ON stores.id=CG.stores_id
LEFT JOIN gaming G ON SG.gaming_id = G.id
WHERE
('$type' IS NULL OR '$type' = '' OR G.type = '$type')
And
('$currency' IS NULL OR '$currency' = '' OR B.currency= '$currency')
GROUP BY stores.name
Order by stores.id
)";
$result = mysqli_query($link, $query);
echo "<table border='1' cellpadding='5' cellspacing='5'>
<tr>
<th>Name</th>
<th>id</th>
</tr>";
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['id'] . "</td>"; //NOT WORKING...always returns "1"
echo "</tr>";
}
mysqli_free_result($result);
echo "</table>";
mysqli_close($link);
?>
Конечно. Вот он: объект (mysqli_result) # 2 (5) {["current_field"] => int (0) ["field_count"] => int (30) ["lengths"] => NULL ["num_rows"] = > int (2) ["тип"] => int (0)}
Поскольку все ваши таблицы содержат идентификатор, поля будут называться tablename.id ... var_dump или print_r и сообщите нам свой результат
@ntirex Я только что поделился результатами var_dump в комментарии над вашим ...
Можете ли вы var_dump строки в вашем цикле while ($row ==mysqli_fetch_assoc($result)), также, пожалуйста
и когда я меняю его на store.id, я получаю "Undefined index"
Можете ли вы использовать Print_r $ row внутри foreach и показать нам, что он будет отображать?
вот он, разбитый на 2 комментария, чтобы уместить все здесь: Array ([id] => 1 [name] => TestStore1 [rank] => 4 [link] => test.com [quality] => 98,7 [safe] = > Y [us] => Да [язык] => английский [бонус] => приветственный купон [live] => bi [crypto] => Y [mobile] => [скорость] => 3 подтверждения (2-10 минут ) [программное обеспечение] => базовое [продукты] => все [юрисдикция] => Стоимость Rica [лицензия] => Государственная комиссия [принадлежит] => Taylor Co. => store.png [features] => много продуктов [против ] => не так много мест [description] => [store_id] => 1 [banking_id] => 1 [currency] => Биткойн
[product_id] => 1 [type] => Retail) Array ([id] => 1 [name] => TestStore2 [rank] => 0 [link] => [quailty] => [safe] => [us ] => Нет [язык] => [бонус] => [live] => [крипто] => [мобильный] => [скорость] => [программное обеспечение] => [продукты] => [юрисдикция] => [ license] => [own] => [logo] => [features] => [cons] => [description] => [store_id] => 2 [banking_id] => 4 [currency] => Японская иена [product_id ] => 1 [тип] => оптом)
выше приведены 2 результата поиска, который я выполнил. Итак, приведенные выше результаты print_r для этих результатов
так странно ... он показывает два массива для двух разных результатов магазина. В myphpadmin у них есть идентификаторы 1 и 2. Но в этих результатах поиска оба идентификатора для обоих магазинов отображаются как 1. Это означает, что что-то в моем запросе меняет все идентификаторы результатов на 1 независимо от того, какие результаты имеют для идентификатора в mysql. но он по-прежнему возвращает остальные результаты правильно
Вы правы ... Затем попробуйте продолжить var dump и попробуйте найти, откуда берутся эти значения
Я знаю. но это то, что я не могу понять, и это возвращает меня к моему первоначальному вопросу. Возможно, я должен был назвать это «как получить результаты эхо-идентификаторов из запросов JOIN» ....
Что ж, я решил это, изменив SELECT * FROM store на SELECT store.id, name FROM store. Поэтому я предполагаю, что единственный способ - добавить каждую переменную в часть выбора, а не использовать select *






Можете вы
var_dump()свой$resultvar plz и показать нам результат?