2016-11-15 2 views
0

Unten ist meine AbfrageWie PHP-Variablen Wert hinzufügen Zwischen Abfrage

public function total_registration_month($from1,$to1){ 

    $q = $this->link->prepare('SELECT advisor, COUNT(*) as total 
     FROM 
     (
       SELECT advisor 
       FROM training_details 
       WHERE ndate BETWEEN $from1 AND $to1 
      UNION ALL 
       SELECT advisor 
       FROM student_details 
       WHERE registereddate 
       BETWEEN $from1 AND $to1 
     ) AS advisor 
     GROUP BY advisor'); 

    $q->execute(); 

    $count = $q->fetchall(); 

    return $count; 

} 

Wie kann ich tht bestanden von1 und to1 Wert in Between von Datum und zu date.If I Variable direclty anwenden oder mit Einzel ganz Es zeigt Fehler.Kindly mir helfen, jemand.

+0

Sie verwenden 'prepare', verwenden es aber nicht. Lesen Sie die [Dokumentation] (http://php.net/manual/en/pdo.prepare.php). Es gibt viele Beispiele dafür, wie man das richtig macht, was auch Ihr Problem beheben wird. –

+0

Verwenden Sie die Datenbankzugriffs-API 'PDO' oder' mysqli_'? – RiggsFolly

+0

Ich benutze PDO-Datenbankzugriff –

Antwort

1

Wie Sie PDO verwenden Sie sollten auch parametrisierte Abfragen wie diese

public function total_registration_month($from1,$to1){ 

    $q = $this->link->prepare('SELECT advisor, COUNT(*) as total 
           FROM 
           (
             SELECT advisor 
             FROM training_details 
             WHERE ndate BETWEEN :fromd AND :tod 
            UNION ALL 
             SELECT advisor 
             FROM student_details 
             WHERE registereddate BETWEEN :fromd1 AND :tod1 
           ) AS advisor 
           GROUP BY advisor'); 

    $params = array(':fromd' => $from1,':tod' => $to1, 
        ':fromd1' => $from1,':tod1' => $to1); 

    $res = $q->execute($params); 
    if (! $res) { 
     print_r($q->errorInfo()); 
     exit; 
    } 

    $count = $q->fetchall(); 
    return $count; 
} 

verwenden Damit entfällt auch alle Fragen, wie Daten in Ihre Abfrage verketten, wie es nach dem von PDO sah, und entfernt auch alle SQL Injection-Probleme mit Daten, die vom Benutzer empfangen wurden

0
public function total_registration_month($from1,$to1){ 

     $q = $this->link->prepare("SELECT advisor, COUNT(*) as total 
     FROM 
     (
       SELECT advisor 
       FROM training_details 
       WHERE ndate BETWEEN '$from1' AND '$to1' 
      UNION ALL 
       SELECT advisor 
       FROM student_details 
       WHERE registereddate 
       BETWEEN '$from1' AND '$to1' 
     ) AS advisor 
     GROUP BY advisor"); 
     $q->execute(); 

     $count = $q->fetchall(); 

     return $count; 

    } 
0

Mit einer PDO-Verbindung versuchen Sie bitte die folgenden Codes: '?'

$q = $this->link->prepare('SELECT advisor, COUNT(*) as total 
    FROM 
    (
      SELECT advisor 
      FROM training_details 
      WHERE ndate BETWEEN ? AND ? 
     UNION ALL 
      SELECT advisor 
      FROM student_details 
      WHERE registereddate 
      BETWEEN ? AND ? 
    ) AS advisor 
    GROUP BY advisor'); 

$q->execute(array($from1,$to1,$from1,$to1)); 

$count = $q->fetchall(); 

Hinweis der (Fragezeichen) in der SQL-Abfrage.