首頁 >資料庫 >mysql教程 >MySQL 可以像 JavaScript 的 eval() 一樣執行字串作為查詢嗎?

MySQL 可以像 JavaScript 的 eval() 一樣執行字串作為查詢嗎?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-29 09:35:16404瀏覽

Can MySQL Execute a String as a Query Like JavaScript's eval()?

MySQL 可以執行字串作為查詢嗎?

問題:

在 MySQL 中環境中,嘗試執行透過 EXEC 或 CALL 傳入 varchar 作為查詢的儲存程序已被證明不成功。是否有一個與 JavaScript 的 eval 函數等效的 MySQL 可以實現這一點?

答案:

是的,以下技術提供了類似於JavaScript 的eval 的MySQL 實作:

  1. 使用CONCAT 定義SQL 變數(@queryString) 以從varchar 動態產生查詢字串參數。
  2. 使用 PREPARE 基於 @queryString 準備一條語句 (stmt)。
  3. 使用 EXECUTE 執行準備好的語句 (stmt)。
  4. 使用 DEALLOCATE PREPARE 取消分配準備好的語句.
  5. 將 SQL 變數 (@asd) 重設為NULL。

例如:

SET @queryString = (
SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM (
    SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( 
           SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 
    ) as qwe 
) as www
);

PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 
SET @asd = NULL;

以上是MySQL 可以像 JavaScript 的 eval() 一樣執行字串作為查詢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn