2016-12-20 25 views
0

我在原則中使用原始SQL。 我的SQL:無法在Doctrince中爲原始SQL設置參數

//input datetime type for $dateStart,$dateEnd 
    $start = date_format($dateStart,'Y-m-d'); 
    $end = date_format($dateEnd,'Y-m-d'); 
     $sql = ' 
      SELECT 
      * 
      FROM 
        log 
      WHERE 
        time >= "? 00:00:00" 
      AND 
        time <= "? 23:59:59" 
      '; 
     $pdo = $this->em->getConnection();  
     $stmt = $pdo->prepare($sql); 
     $stmt->bindValue(1,$start); 
     $stmt->bindValue(2,$end);  

     $stmt->execute(); 
     $rs = $stmt->fetchAll(); 

我試過bindValue,bindParam但沒有希望。我也嘗試$param作爲數組傳遞給execute,它不起作用。

$param = array($start,$end); 

任何人都可以幫助我嗎?

回答

3

You cannot bind a part of a string literal,而是一個完整的文字只有

此外,它是沒有意義的分裂PHP和SQL

$start = date_format($dateStart,'Y-m-d 00:00:00'); 
    $end = date_format($dateEnd,'Y-m-d 23:59:59'); 

    $pdo = $this->em->getConnection(); 
    $stmt = $pdo->prepare('SELECT * FROM log WHERE time BETWEEN ? AND ?'); 
    $stmt->execute([$start, $end]); 
    $rs = $stmt->fetchAll(); 
+0

之間的日期創建你是超人!非常感謝幫助我。 – Hanata

+0

您在Controller/Repository中寫入您的查詢的位置? –

+0

@你的常識,我試圖在庫中編寫腳本,你可以用連接字符串更新你的答案。 –

相關問題