Christian Kruse: Wiki-Artikel Reloadsperre

Beitrag lesen

problematische Seite

Hallo Matthias,

Ich würde hier lieber die Parameter an execute() übergeben, das ist einfacher lesbar:

$id_check -> execute(array(':BName' => $_POST['bname']));

Ist damit auch der Kontextwechsel abgesichert?

Ja. Das ist ein Shortcut für bindValue.

bindParam sorgt ja auch dafür, dass eben nicht mehr mysql_real_escape_string() o. ä. verwendet werden muss oder sehe ich das falsch und das macht schon das prepare?

Das macht das Konzept der prepared statements mit placeholders, ja. Wobei bei PostgreSQL das gleiche Konzept auf für normale Statements existiert (Stichwort EXECUTE). Das bindParam ist nur ein Konzept, um prepared statements in Loops zu optimieren. Die Variablen werden via Referenz an den Parameter gebunden und können vor dem execute nochmal geändert werden. Das erlaubt es, das bindParam vor dem Loop einmal auszuführen und im Loop nur noch den Wert der Variablen zu ändern:

create table foo (bar int);
$db = new PDO("pgsql:host=localhost;dbname=test");

$bar = 0;

$stmt = $db->prepare("INSERT INTO foo (bar) VALUES (:bar)");
$stmt->bindParam(':bar', $bar);

for($bar = 0; $bar < 10; $bar++) {
  $stmt->execute();
}
test=# select * from foo;
 bar 
-----
   0
   1
   2
   3
   4
   5
   6
   7
   8
   9
(10 rows)

LG,
CK

0 48

Wiki-Artikel Reloadsperre

Matthias Apsel
  • php
  • programmiertechnik
  • selfhtml-wiki
  1. 0
    Christian Kruse
    1. 0
      Matthias Apsel
      1. 0
        Christian Kruse
        1. 0
          Matthias Apsel
          1. 0
            Christian Kruse
            1. 0
              Matthias Apsel
              1. 0
                Christian Kruse
                1. 0
                  Matthias Apsel
                  1. 0
                    Christian Kruse
                    1. 0
                      Matthias Apsel
                    2. 0
                      Matthias Apsel
                      1. 0
                        Matthias Apsel
                        1. 0
                          Christian Kruse
                          1. 0
                            Matthias Apsel
                            1. 0
                              Christian Kruse
                              1. 0
                                Matthias Apsel
                                1. 0
                                  Christian Kruse
                                  1. 0
                                    Matthias Apsel
                                    1. 0
                                      Der Martin
                                      1. 1
                                        Auge
                                        1. 0
                                          Christian Kruse
                                    2. 0
                                      Christian Kruse
        2. 0
          Mitleser
          1. 0
            Christian Kruse
    2. 0
      Matthias Apsel
      1. 1
        Christian Kruse
        1. 0
          Matthias Apsel
          1. 1
            Christian Kruse
            1. 0
              Matthias Apsel
              1. 0
                Christian Kruse
                1. 0
                  Matthias Apsel
                  1. 0
                    Christian Kruse
                2. 0
                  Matthias Apsel
                  1. 0
                    Christian Kruse
                    1. 0
                      Matthias Apsel
                3. 0
                  Matthias Apsel
                  1. 0
                    Christian Kruse
                    1. 0
                      Matthias Apsel
                      1. 0
                        Christian Kruse
                        1. 0
                          Matthias Apsel
                        2. 0
                          Matthias Apsel
                          1. 0
                            Christian Kruse
                            1. 0
                              Matthias Apsel
                              1. 0
                                Christian Kruse
                                1. 1
                                  Matthias Apsel
                                  1. 0
                                    Christian Kruse
  2. -1
    pl