簡體   English   中英

使用symfony中的參數執行sql請求時出現語法錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM