2017-04-08 93 views
1

我有這樣的困境和頭痛,我正在使用日期在PHP和Mysql中工作。如何使用php變量?

在Workbench和phpmyadmin的能正常工作並返回我一些行

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有日期時間字段,在PHP我這樣做INSERT,它工作正常,而我填寫與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心不是,它從零無論日期是返回的東西diferent。我猜我正在使用PHP變量$ fechaini錯誤,如果你能幫助我正確的語法。

PD:我有和無點(fechaini $)我不是有點兒啞 (我看不到什麼回報sentente,我使用過Android Studio測試...是有辦法看看PHP的回聲或打印什麼?我不是一個先進的,甚至不是一箇中級的php用戶。)

+0

爲什麼你'STR_TO_DATE'什麼已經是正確的格式? – tadman

+0

我讀過,需要使用「之間」,所以它會將其作爲日期讀取 –

+0

我只是想正確的方式來使用我從我的應用獲得的$ fechaini變量,變量有deyyyy-mm-dd HH:mm :ss格式,我用它來插入。 –

回答

1

嗯,我解決了這個,使用mysqli,這個工程,我管理錯誤的結果,但使用行,這是我想要的。感謝大家。希望這有助於管理查詢的返回結果。

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(); 




    }