我是新來的PDO語句,到目前爲止我已經設法使用它,使用準備好的語句和許多東西,直到今天。bindParam沒有完成sql查詢
我有兩個查詢,第一個檢索一些數據,存儲結果,然後第二個查詢使用該數據檢索最終數據。我正在設計一個糟糕的設計數據庫,這就是爲什麼我必須做奇怪的事情。
第一個查詢獲取運動聯賽的開始年份和結束年份。然後,將年份傳遞給第二個查詢以獲取這些年份(WHERE)之間的數據。
的問題是,bindParam似乎不起作用,它不綁定參數,顯示了一個,然後將SQL拋出以下異常:
Connection failed: SQLSTATE[42000]: Syntax error or access violation:
1064 You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use
near ''0701' AND ?'0630' ORDER BY e.FECHA DESC' at line 5
的SQL:
$sqlQueryAuxiliar = "SELECT ano_inicio, ano_fin
FROM TEMPORADAS
ORDER BY ano_inicio DESC
LIMIT 1;";
$sqlQuery = "SELECT e.id, e.JORNADA, DATE_FORMAT(e.FECHA, '%Y-%m-%d'),
e.HORA, c1.nombre_temporada, c2.nombre_temporada
FROM ENCUENTROS AS e
JOIN CLUBS AS c1 ON (e.COD_EQUIL = c1.siglas)
JOIN CLUBS AS c2 ON (e.COD_EQUIV = c2.siglas)
WHERE e.FECHA BETWEEN :anoInicio'0701' AND :anoFinal'0630'
ORDER BY e.FECHA DESC;";
這是PHP代碼:
$this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmtAux = $this->_db->prepare($sqlQueryAuxiliar);
$stmtAux->execute();
$fetched = $stmtAux->fetchAll();
$stmtAux = null;
$stmt = $this->_db->prepare($sqlQuery);
$stmt->bindParam(':anoInicio', $fetched[0][0], PDO::PARAM_STR, 12);
$stmt->bindParam(':anoFinal', $fetched[0][1], PDO::PARAM_STR, 12);
$stmt->execute();
while ($row = $stmt->fetch()) {
$partidos[] = $row;
}
$stmt = null;
我認爲涉及到單個配額'「0701''和'」 0630''錯誤,逃避他們,然後再試一次 – 2013-03-11 16:43:02
有什麼':anoInicio'後面的''0701',或':anoFinal'後面的''0630''應該是?這是一個嘗試連接數字與綁定變量? – 2013-03-11 16:43:43
@MarkBaker月和日。結果應該是:「YearMonthDay」,如「20130701」。這個數據庫不使用標準時間戳,這是一個痛苦的工作。 – Deses 2013-03-11 16:45:33