2017-04-08 1 views
1

나는 그런 딜레마와 두통이있다. 나는 PHP와 MySQL에서 날짜를 사용하고있다. 이 잘 작동하고 나에게 일부 행PHP 변수 사용 방법?

SELECT * FROM reserva WHERE STR_TO_DATE('2017-04-07 19:00:00' , '%Y-%m-%d %H:%i:%s') BETWEEN fechaini AND fechafin 

fechafin 및 fechaini을 반환 워크 벤치와 phpMyAdmin을에서

내가이 INSERT, 그것은 잘 작동 할 PHP에서, DATETIME 필드, 그리고 내가 DB와 충전 해요 이.

public function storeReserva($fechaini) { 

    $uuid = uniqid('', true); 

    $stmt = $this->conn->prepare("INSERT INTO reserva(unique_id, fechaini, fechafin) VALUES(?, ? , ? + INTERVAL 2 HOUR)"); 
    $stmt->bind_param("sss", $uuid, $fechaini, $fechaini); 
    $result = $stmt->execute(); 
    $stmt->close(); 

    // check for successful store 
    if ($result) { 
     $stmt = $this->conn->prepare("SELECT * FROM reserva WHERE unique_id = ?"); 
     $stmt->bind_param("s", $uuid); 
     $stmt->execute(); 
     $reserva = $stmt->get_result()->fetch_assoc(); 
     $stmt->close(); 

     return $reserva; 

    } else { 

     return false; 
    } 
} 

나는 필드

public function storeReserva2($fechaini) { 

    $stmt1 = $this->conn->prepare("SELECT * FROM reserva WHERE STR_TO_DATE('.$fechaini' , '%Y-%m-%d %H:%i:%s') BETWEEN fechaini AND fechafin"); 
    $result1 = $stmt1->execute(); 
    $stmt1->close(); 
    if ($result1 !== null) 
    { 

     $uuid = uniqid('', true); 
     $stmt = $this->conn->prepare("INSERT INTO reserva(unique_id, fechaini, fechafin) VALUES(?, ? , ? + INTERVAL 2 HOUR)"); 
     $stmt->bind_param("sss", $uuid, $fechaini, $fechaini); 
     $result = $stmt->execute(); 
     $stmt->close(); 

     // Revisa si se hizo la reserva con su id unica 
     if ($result) { 
      $stmt3 = $this->conn->prepare("SELECT * FROM reserva WHERE unique_id = ?"); 
      $stmt3->bind_param("s", $uuid); 
      $stmt3->execute(); 
      $reserva = $stmt3->get_result()->fetch_assoc(); 
      $stmt3->close(); 

      return $reserva; 

     } 

문 나던 작품의 어떤 행의 사이에 새로운 fechaini 밤은, 그것은 날짜는 어떤 널에서 뭔가 개의 다른를 반환하는 경우 확인하려면. 나는 PHP 변수 $ fechaini를 잘못 사용하고있는 것으로 추측합니다. 올바른 구문을 사용하면 도움이됩니다.

PD : 필자는 점 ($ fechaini)을 사용하거나 사용하지 않고 테스트했습니다. (나는 sentente가 반환하는 것을 볼 수 없으며, android studio ...를 사용하고 있습니다. PHP는 무엇을 참조하십시오 에코 또는 인쇄? 나는 심지어 중간 php 사용자가 고급 아니에요.)

+0

왜 올바른 형식의 항목이 'STR_TO_DATE'입니까? – tadman

+0

"Between"을 사용하여 날짜로 읽을 것입니다. –

+0

방금 ​​내 앱에서 얻은 $ fechaini 변수를 사용하고 싶습니다. 변수에 yyyy-mm-dd가 있습니다. HH : mm : ss 형식, 삽입하는 데 사용합니다. –

답변

1

글쎄, 내가 이것을 해결, mysqli를 사용하여,이 작품은, 내가 잘못 관리 결과지만 num 행, 그것은 내가 원한 것입니다. 모두에게 감사드립니다. 이것이 쿼리의 반환 결과를 관리하는 방법에 도움이되기를 바랍니다.

public function storeReserva2($fechaini) { 




$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "android_api"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM reserva WHERE STR_TO_DATE('$fechaini' , '%Y-%m-%d %H:%i:%s') BETWEEN fechaini AND fechafin"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    echo "fechas existentes"; 
    return false; 

} else { 

    $uuid = uniqid('', true); 
      $stmt = $this->conn->prepare("INSERT INTO reserva(unique_id, fechaini, fechafin) VALUES(?, ? , ? + INTERVAL 2 HOUR)"); 
      $stmt->bind_param("sss", $uuid, $fechaini, $fechaini); 
      $result = $stmt->execute(); 
      $stmt->close(); 

      // Revisa si se hizo la reserva con su id unica 
      if ($result) { 
       $stmt3 = $this->conn->prepare("SELECT * FROM reserva WHERE unique_id = ?"); 
       $stmt3->bind_param("s", $uuid); 
       $stmt3->execute(); 
       $reserva = $stmt3->get_result()->fetch_assoc(); 
       $stmt3->close(); 

       return $reserva; 

      } 

} 
$conn->close(); 




    }