2014-12-09 3 views
0

У меня есть какие-то странные проблемы:Проверить запись в базе данных существует Ith PHP MySQLi

Я имею базу данных дней и USER_DAYS ... ДНЕЙ: enter image description here

USER_DAYS: enter image description here

I есть функция, чтобы проверить, существует ли сегодня дата в базе данных USER_DAYS с user_id, и если да, то я получаю данные из таблицы DAYS: (dbhanler.php)

public function getDay($user_id) { 
     $stmt = $this->conn->prepare("SELECT d.id, d.day, d.status, d.created_at, d.dayDate, d.startTime, d.endTime from days d, user_days ud WHERE d.dayDate = ? AND ud.dayDate = d.dayDate AND ud.user_id = ?"); 
     $t=time(); 
     $dayDate = date("Y-m-d",$t); 
     $stmt->bind_param("si", $dayDate, $user_id); 
     if ($stmt->execute()) { 
      $res = array(); 
      $stmt->bind_result($id, $day, $status, $created_at, $dayDate, $startTime, $endTime); 

      $stmt->fetch(); 
      $res["id"] = $id; 
      $res["day"] = $day; 
      $res["status"] = $status; 
      $res["created_at"] = $created_at; 
      $res["dayDate"] = $dayDate; 
      $res["startTime"] = $startTime; 
      $res["endTime"] = $endTime; 
      $stmt->close(); 
      return $res; 
     } else { 
      return NULL; 
     } 
    } 

index.php

$app->get('/days', 'authenticate', function() { 
       global $user_id; 
       $response = array(); 
       $db = new DbHandler(); 

       $result = $db->getDay($user_id); 

       if ($result != NULL) { 
        $response["error"] = false; 
        $response["id"] = $result["id"]; 
        $response["day"] = $result["day"]; 
        $response["status"] = $result["status"]; 
        $response["createdAt"] = $result["created_at"]; 
        $response["dayDate"] = $result["dayDate"]; 
        $response["startTime"] = $result["startTime"]; 
        $response["endTime"] = $result["endTime"]; 

        echoRespnse(200, $response); 
       } else { 
        $response["error"] = true; 
        $response["message"] = "The requested resource doesn't exists"; 
        echoRespnse(404, $response); 
       } 
      }); 

Я думаю, что решить проблему, но что-то очень странное: Когда я не имею с user_id записей в USER_DAYS тогда все работает нормально и дать мне результаты, но пуста, если у меня есть user_id, тогда дайте мне запись неправильного пользователя, дайте мне запись последней записи пользователя, отправленной

Что может быть проблемой здесь? MYSQLi QUERY?

+2

проводки скриншоты почти всегда загромождает вопросы с нерелевантные детали. Если у вас нет определенной графической проблемы, попробуйте опубликовать только тот код, который у вас есть. Сама схема, если необходимо, может быть показана с помощью 'SHOW CREATE TABLE'. – tadman

ответ

1

Ошибка в соединении таблиц. Соединение только в день - это соединение n-m, но вам нужно уникальное поле для получения соединения от 1 до n.

Например: USER_DAYS

  1. данных от пользователя А, 2014-12-08
  2. данных от пользователя B, 2014-12-08
  3. данных от пользователя C, 2014-12- 08
  4. Данные пользователя А, 2014-12-09

При выполнении GetDate (идентификатор пользователя B) вы получите записей 1 , 2 и 3. Функция будет ожидать только один ряд, поэтому она занимает первое (от пользователя А)

Регистрация в день ид вместо дня

WHERE d.dayDate = ? AND ud.day_id = d.id AND ud.user_id = ? 
Смежные вопросы