<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 綁定參數 > 原文: [http://zetcode.com/db/sqliteruby/bind/](http://zetcode.com/db/sqliteruby/bind/) SQL 語句通常是動態構建的。 用戶提供一些輸入,并且此輸入已內置到語句中。 程序員每次處理用戶的輸入時都必須謹慎。 它具有一些嚴重的安全隱患。 動態構建 SQL 語句的推薦方法是使用參數綁定。 當我們綁定參數時,我們在語句中創建占位符。 占位符是 SQL 語句中的特殊標記。 它通常是一個問號`?`。 稍后,使用`bind_param`,`execute`,`query`等方法將參數綁定到占位符。 綁定參數可以防止 SQL 注入程序。 它會自動轉義一些特殊字符并允許正確處理它們。 準備語句并在執行語句之前綁定其參數時,通常可以提高數據庫性能。 在`sqlite3` Ruby 模塊中,始終準備語句。 即使我們不調用數據庫對象的`prepare`方法而直接調用`execute`方法,該語句也是由`sqlite3` Ruby 模塊在后臺準備的。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.new "test.db" name = "Volkswagen" stm = db.prepare "SELECT * FROM Cars WHERE Name = ?" stm.bind_param 1, name rs = stm.execute row = rs.next puts row.join "\s" rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure stm.close if stm db.close if db end ``` 該示例從`Cars`表中為特定的汽車名稱選擇一行。 ```ruby name = "Volkswagen" ``` 此值可能來自用戶:例如,來自 HTML 表單。 ```ruby stm = db.prepare "SELECT * FROM Cars WHERE Name = ?" ``` 問號`?`是值的占位符。 它將稍后添加到腳本中。 ```ruby stm.bind_param 1, name rs = stm.execute ``` 使用`bind_param`方法,名稱變量與語句中的占位符關聯。 `execute`方法將返回結果集。 ```ruby $ ./bindparam1.rb 8 Volkswagen 21600 ``` 這是示例的輸出。 接下來,我們提出另一種綁定參數的方式。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.new "test.db" id = 4 stm = db.prepare "SELECT * FROM Cars WHERE Id = :id" rs = stm.execute id row = rs.next puts row.join "\s" rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure stm.close if stm db.close if db end ``` 我們從`Cars`表中為特定 ID 選擇一行。 ```ruby stm = db.prepare "SELECT * FROM Cars WHERE Id = :id" ``` 以前,我們已經看到一個問號作為占位符。 SQLite Ruby 也支持命名占位符。 ```ruby rs = stm.execute id ``` 該參數綁定在`execute`方法中。 我們提供了另一種綁定參數的方法。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.new "test.db" id = 3 row = db.get_first_row "SELECT * FROM Cars WHERE Id = ?", id puts row.join "\s" rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure db.close if db end ``` 這次,所有事情(準備語句,綁定參數和執行語句)都使用一種方法完成。 ```ruby row = db.get_first_row "SELECT * FROM Cars WHERE Id = ?", id ``` `get_first_row`是一種便捷的方法,一步完成三件事。 在最后一個示例中,我們將在一個語句中綁定多個參數。 ```ruby #!/usr/bin/ruby require 'sqlite3' begin db = SQLite3::Database.new ":memory:" stm = db.prepare "SELECT 2 + ? + 6 + ? + ?" stm.bind_params 3, 4, 6 rs = stm.execute row = rs.next puts row rescue SQLite3::Exception => e puts "Exception occurred" puts e ensure stm.close if stm db.close if db end ``` 在該示例中,SQL 語句中有更多的占位符。 ```ruby stm = db.prepare "SELECT 2 + ? + 6 + ? + ?" ``` `SELECT`語句中有三個占位符。 ```ruby stm.bind_params 3, 4, 6 ``` 我們用`bind_params`方法綁定三個值。 ```ruby $ ./bindparams.rb 21 ``` 這是`bindparams.rb`程序的輸出。 在 SQLite Ruby 教程的這一部分中,我們討論了綁定參數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看