2017-04-08 1 views
1

Ich habe so ein Dilemma und Kopfschmerzen, ich arbeite in PHP und Mysql mit Daten. Wie benutzt man eine PHP-Variable?

In Workbench und phpMyAdmin das funktioniert gut und gibt mir ein paar Zeilen

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

Wo fechafin und fechaini sind DATETIME- Felder, in php ich diese INSERT, es funktioniert gut, und ich bin Füllen der DB mit Dies.

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; 
    } 
} 

Ich möchte zwischen in einer beliebigen Zeile der Felder

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; 

     } 

Die Aussage nicht funktioniert, es ist etwas diferent von null zurück, was auch immer die Daten sind, wenn die neue fechaini ist nicht zu überprüfen. Ich schätze, ich benutze die PHP-Variable $ Fechaini falsch, wenn Sie mir mit der richtigen Syntax helfen können.

PD: Ich testete mit und ohne den Punkt ($ fechaii) Ich bin nicht das ein bisschen dumm (Ich kann nicht sehen, was die sentente zurück, ich benutze Android Studio ... gibt es einen Weg zu Sehen Sie, was die PHP Echo oder Drucken? Ich bin kein fortgeschrittener auch nicht ein Zwischen PHP-Benutzer.)

+0

Warum haben Sie 'STR_TO_DATE', was ist bereits im richtigen Format? – tadman

+0

Ich lese das ist notwendig, um "Between" zu verwenden, so wird es als ein Datum lesen –

+0

Ich möchte nur die richtige Art und Weise zu verwenden, die Variable $ fechaini ich bekomme von meiner App die Variable haben de JJJJ-MM-TT HH: mm : ss format, ich benutze es zum einfügen. –

Antwort

1

Nun, ich löste dies, mit mysqli, das funktioniert, ich war falsch das Ergebnis, aber mit der Anzahl von Reihen, es war was ich wollte. Danke an alle. hoffe, das hilft bei der Verwaltung des Rückgabeergebnisses einer Anfrage.

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




    }