Я пытаюсь показать некоторые записи из таблицы, а если не существует, чтобы показать кнопку create new. Если существует, чтобы показать запись.Соединение двух таблиц и проверка наличия записи
Есть две таблицы - users
user_id
username
...
И restaurants
rest_id
name
menu
Таким образом, после пользователь создан и он войти в его счет должен иметь состояние, если user_id
есть ресторан user_id = menu
(меню из ресторанов) , Если в меню show show создать не существует. Это запрос, с помощью которого я пытаюсь
$q = $pdo->prepare("SELECT * FROM restaurants m
LEFT JOIN users ON users.user_id = m.menu WHERE rest_id = :user_id");
$q->bindParam(':user_id', $_SESSION['user_id']);
$q->execute();
// fetch the results
$results = $q->fetchAll(PDO::FETCH_ASSOC);
if(count($results) > 0) {
foreach($results as $res) {
echo '<a href="users/restaurant.php?rest_id='. $res['rest_id'] .'"> '.$res['name'].' </a>';
}
} else {
echo '<a href="users/restAdd.php?rest_id='.$_SESSION['user_id'].'">Create New</a>';
}
Таким образом, когда пользователь Логин он кнопку Create New
увидеть, потому что он не один. Проблема в том, что он снова регистрируется после того, как он уже создал запись ... кнопка Create New
снова виден.
У меня проблема в запросе или нет?
ОБНОВЛЕНИЕ: menu
строка hold user_id из сеанса, когда он создает новый. Это в restAdd.php
$sql = "INSERT INTO restaurants (name, menu, image) VALUE (:name, :menu, :image)";
$q = $pdo->prepare($sql);
$q->execute(array(
':name' => $name,
':menu' => $_SESSION['user_id'],
':image' => $forDB
));
Проверьте снова запрос, «users.user_id = m.menu» ??? Это верно? Если да, объясните пожалуйста – vivoconunxino
Ну, не нужно ли мне проверять соединение user_id с «пользователями» и меню из «ресторанов»? –
Pro tip: Не используйте 'SELECT *' специально в 'JOIN' запросах. Вместо этого перечислите нужные столбцы. Кроме того, мы не можем сказать из вашего вопроса, как точно каждая строка в таблице ваших ресторанов относится к строке в вашей таблице 'users'. Вы можете объяснить? –