[英]Syntax error while executing a sql request with parameters in symfony?
我有一個簡單的問題,我想,我遵循Symfony 4.3文檔,並試圖完成他們為執行SQL請求所做的事情,但是在execute方法中傳遞參數時遇到錯誤,但我沒有得到任何錯誤執行相同的代碼但不將參數傳遞給請求。
我試過這個並且它有效:
$conn = $this->getDoctrine()->getManager()->getConnection();
$sql = '
SELECT * FROM question_comment WHERE question=2 LIMIT 0, 3';
$stmt = $conn->prepare($sql);
$stmt->execute();
var_dump($stmt->fetchAll());
但這不起作用,我得到一個語法錯誤:
$question = $request->query->get('question');
$row = $request->query->get('row');
$question = intval($question);
$beggining = intval($row*3);
$conn = $this->getDoctrine()->getManager()->getConnection();
$sql = '
SELECT * FROM question_comment WHERE question=:question LIMIT :beggining , 3';
$stmt = $conn->prepare($sql);
$stmt->execute(['question' => $question, 'beggining' => $beggining]);
var_dump($stmt->fetchAll());
這是錯誤:
執行'SELECT * FROM question_comment WHERE question =:question LIMIT:beggining,3'with params [2,0]時發生異常:
SQLSTATE [42000]:語法錯誤或訪問沖突:1064 SQL語法中有錯誤; 檢查與MySQL服務器版本對應的手冊,以便在第1行的“0”,3'附近使用正確的語法
這就是我所遵循的,我確實做了那里,但它不起作用。
我試過這個解決方案綁定我的參數,但它也不起作用:
$sql = '
SELECT * FROM question_comment WHERE question=:question LIMIT :beggining , 3';
$stmt = $conn->prepare($sql);
$stmt->bindParam(':question', $question, \PDO::PARAM_INT);
$stmt->bindParam(':beginning', $beginning, \PDO::PARAM_INT);
$stmt->execute();
我得到了這個:
執行'SELECT * FROM question_comment WHERE question =:question LIMIT:beggining,3'with params [2,null]時發生異常:
SQLSTATE [HY093]:參數號無效:未定義參數
綁定參數的替代方法是使用它。
$stmt->bindParam(':question', $question, PDO::PARAM_STR);
$stmt->bindParam(':beginning', $beginning, PDO::PARAM_INT);
或者確保綁定了$ beginning參數,將其強制轉換為int。
$stmt->bindValue(':beginning', (int)trim($beginning), PDO::PARAM_INT);
或者如果你想堅持現有的代碼。
$stmt->execute(['question' => $question, 'beggining' => (int)trim($beggining)]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.