<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 在 MySQL 中使用 Perl 綁定參數&列 > 原文: [http://zetcode.com/db/mysqlperl/bind/](http://zetcode.com/db/mysqlperl/bind/) SQL 語句通常是動態構建的。 用戶提供一些輸入,并將其內置到語句中。 程序員每次處理用戶的輸入時都必須謹慎。 它具有一些嚴重的安全隱患。 動態構建 SQL 語句的推薦方法是使用參數綁定。 綁定參數可以防止 SQL 注入程序。 它會自動轉義一些特殊字符并允許正確處理它們。 當我們準備語句并綁定參數時,許多數據庫也會顯著提高其性能。 ```perl #!/usr/bin/perl use strict; use DBI; my $dbh = DBI->connect( "dbi:mysql:dbname=mydb", "user12", "34klq*", { RaiseError => 1 }, ) or die $DBI::errstr; my $name = "Volkswagen"; my $sth = $dbh->prepare("SELECT * FROM Cars WHERE Name = ?"); $sth->execute($name); my ($id, $name, $price) = $sth->fetchrow(); print "$id $name $price\n"; $sth->finish(); $dbh->disconnect(); ``` 該示例從`Cars`表中為特定的汽車名稱選擇一行。 ```perl my $name = "Volkswagen"; ``` 這是一個可能來自用戶的值。 例如從 HTML 表單。 ```perl my $sth = $dbh->prepare("SELECT * FROM Cars WHERE Name = ?"); ``` 問號`?`是值的占位符。 它將稍后添加到腳本中。 ```perl $sth->execute($name); ``` 在`execute()`方法中,我們將值綁定到占位符。 以下示例與上一個示例相同; 這次我們使用`bind_param()`方法。 ```perl #!/usr/bin/perl use strict; use DBI; my $dbh = DBI->connect( "dbi:mysql:dbname=mydb", "user12", "34klq*", { RaiseError => 1 }, ) or die $DBI::errstr; my $name = "Volkswagen"; my $sth = $dbh->prepare("SELECT * FROM Cars WHERE Name = ?"); $sth->bind_param(1, $name); $sth->execute(); my ($id, $name, $price) = $sth->fetchrow(); print "$id $name $price\n"; $sth->finish(); $dbh->disconnect(); ``` 使用`bind_param()`方法檢索帶有參數綁定的行。 ```perl $sth->bind_param(1, $name); ``` `bind_param()`方法采用一個值,并將其與 SQL 語句內的占位符關聯。 可以有更多的占位符。 占位符從 1 開始編號。 ## `quote`參數 使用占位符并將參數綁定到它們是處理動態 SQL 語句構建的最佳方法。 有時不能使用占位符。 例如,當我們要動態選擇一個表名時。 在這種情況下,我們可以連接 SQL 字符串并使用`quote()`和`quote_identifier()`方法。 我們必須對變量使用這些方法,否則會引入嚴重的安全性錯誤。 `quote()`方法引用字符串字面值,以用作 SQL 語句中的字面值。 它轉義包含在字符串中的任何特殊字符(例如引號),并添加所需類型的外部引號。 `quote_identifier()`方法引用在 SQL 語句中使用的標識符(表名等)。 它轉義包含的任何特殊字符(例如雙引號),并添加所需類型的外部引號。 ```perl #!/usr/bin/perl use strict; use DBI; my $dbh = DBI->connect( "dbi:mysql:dbname=mydb", "user12", "34klq*", { RaiseError => 1 }, ) or die $DBI::errstr; my $table = "Cars"; my $name = "Volkswagen"; my $sql = sprintf "SELECT * FROM %s WHERE Name = %s", $dbh->quote_identifier($table), $dbh->quote($name); my $sth = $dbh->prepare($sql); $sth->execute(); my @row; while (@row = $sth->fetchrow_array()) { print "@row\n"; } $sth->finish(); $dbh->disconnect(); ``` 在該示例中,我們使用`quote()`和`quote_identifier()`方法動態構建 SQL 語句字符串。 ```perl my $table = "Cars"; my $name = "Volkswagen"; ``` 這些是在 SQL 語句中使用的 Perl 標量。 ```perl my $sql = sprintf "SELECT * FROM %s WHERE Name = %s", $dbh->quote_identifier($table), $dbh->quote($name); ``` 我們有一個更復雜的 SQL 語句。 無法使用占位符構建此語句。 我們使用`quote`方法來引用提供的標量。 ## 綁定列 使用獲取方法時,我們將返回的值復制到 Perl 變量中。 通過綁定列可以簡化此過程并使其更快。 Perl DBI 具有`bind_col()`和`bind_columns()`方法,它們將 Perl 變量與表列相關聯。 ```perl #!/usr/bin/perl use strict; use DBI; my $dbh = DBI->connect( "dbi:mysql:dbname=mydb", "user12", "34klq*", { RaiseError => 1 }, ) or die $DBI::errstr; my $sth = $dbh->prepare( "SELECT * FROM Cars LIMIT 4" ); $sth->execute(); $sth->bind_columns(\my($id, $name, $price)); while ($sth->fetchrow_arrayref()) { print "$id $name $price\n"; } $sth->finish(); $dbh->disconnect(); ``` 在示例中,我們將`Cars`表的三列綁定到`$id`,`$name`和`$price`變量。 ```perl $sth->bind_columns(\my($id, $name, $price)); ``` 我們使用`bind_columns()`方法將變量綁定到`Cars`表的列。 ```perl while ($sth->fetchrow_arrayref()) { print "$id $name $price\n"; } ``` 我們遍歷返回的數據并將值打印到控制臺。 在 MySQL Perl 教程的這一部分中,我們討論了綁定參數。
                  <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>

                              哎呀哎呀视频在线观看