Use `->prepare()` instead of `->prepareStatement()`
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 13 Dec 2022 09:35:27 +0000 (10:35 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 13 Dec 2022 09:35:49 +0000 (10:35 +0100)
docs/php/database-access.md
snippets/php/api/cronjobs/LastActivityCronjob.class.php
snippets/php/code-style/Box.class.php

index c22ea26d86006e0d2083430e0d13b2162377a2db..fb60ee1243d8d5d94c171612b92cc568dbd8166d 100644 (file)
@@ -8,7 +8,7 @@ The database access is designed around [PreparedStatement](https://github.com/Wo
 
 ```php
 <?php
-$statement = \wcf\system\WCF::getDB()->prepareStatement("SELECT * FROM wcf".WCF_N."_example");
+$statement = \wcf\system\WCF::getDB()->prepare("SELECT * FROM wcf1_example");
 $statement->execute();
 while ($row = $statement->fetchArray()) {
     // handle result
@@ -22,10 +22,10 @@ The example below illustrates the usage of parameters where each value is replac
 ```php
 <?php
 $sql = "SELECT  *
-        FROM    wcf".WCF_N."_example
+        FROM    wcf1_example
         WHERE   exampleID = ?
                 OR bar IN (?, ?, ?, ?, ?)";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 $statement->execute([
     $exampleID,
     $list, $of, $values, $for, $bar
@@ -44,16 +44,16 @@ You can opt-in to retrieve only a single row from database and make use of short
 ```php
 <?php
 $sql = "SELECT  *
-        FROM    wcf".WCF_N."_example
+        FROM    wcf1_example
         WHERE   exampleID = ?";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql, 1);
+$statement = \wcf\system\WCF::getDB()->prepare($sql, 1);
 $statement->execute([$exampleID]);
 $row = $statement->fetchSingleRow();
 ```
 
 There are two distinct differences when comparing with the example on query parameters above:
 
-1. The method `prepareStatement()` receives a secondary parameter that will be appended to the query as `LIMIT 1`.
+1. The method `prepare()` receives a secondary parameter that will be appended to the query as `LIMIT 1`.
 2. Data is read using `fetchSingleRow()` instead of `fetchArray()` or similar methods, that will read one result and close the cursor.
 
 ### Fetch by Column
@@ -65,8 +65,8 @@ Fetching an array is only useful if there is going to be more than one column pe
 ```php
 <?php
 $sql = "SELECT  bar
-        FROM    wcf".WCF_N."_example";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+        FROM    wcf1_example";
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 $statement->execute();
 while ($bar = $statement->fetchColumn()) {
     // handle result
@@ -79,9 +79,9 @@ Similar to fetching a single row, you can also issue a query that will select a
 ```php
 <?php
 $sql = "SELECT  bar
-        FROM    wcf".WCF_N."_example
+        FROM    wcf1_example
         WHERE   exampleID = ?";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql, 1);
+$statement = \wcf\system\WCF::getDB()->prepare($sql, 1);
 $statement->execute([$exampleID]);
 $bar = $statement->fetchSingleColumn();
 ```
@@ -95,8 +95,8 @@ To fetch all rows of query, you can use `PDOStatement::fetchAll()` with `\PDO::F
 ```php
 <?php
 $sql = "SELECT  *
-        FROM    wcf".WCF_N."_example";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+        FROM    wcf1_example";
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 $statement->execute();
 $rows = $statement->fetchAll(\PDO::FETCH_ASSOC);
 ```
@@ -108,8 +108,8 @@ If you only want to fetch a list of the values of a certain column, you can use
 ```php
 <?php
 $sql = "SELECT  exampleID
-        FROM    wcf".WCF_N."_example";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+        FROM    wcf1_example";
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 $statement->execute();
 $exampleIDs = $statement->fetchAll(\PDO::FETCH_COLUMN);
 ```
@@ -123,8 +123,8 @@ This case is covered by `PreparedStatement::fetchMap()`:
 ```php
 <?php
 $sql = "SELECT  exampleID, userID
-        FROM    wcf".WCF_N."_example_mapping";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+        FROM    wcf1_example_mapping";
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 $statement->execute();
 $map = $statement->fetchMap('exampleID', 'userID');
 ```
@@ -138,8 +138,8 @@ If you do not have a combination of columns with unique pairs of values, but you
 ```php
 <?php
 $sql = "SELECT  exampleID, userID
-        FROM    wcf".WCF_N."_example_mapping";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+        FROM    wcf1_example_mapping";
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 $statement->execute();
 $map = $statement->fetchMap('exampleID', 'userID', false);
 ```
@@ -171,10 +171,10 @@ Prepared statements not only protect against SQL injection by separating the log
 <?php
 $data = ['abc', 'def', 'ghi'];
 
-$sql = "INSERT INTO  wcf".WCF_N."_example
+$sql = "INSERT INTO  wcf1_example
                      (bar)
         VALUES       (?)";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 
 \wcf\system\WCF::getDB()->beginTransaction();
 foreach ($data as $bar) {
@@ -193,10 +193,10 @@ $data = [
     4 => 'ghi'
 ];
 
-$sql = "UPDATE  wcf".WCF_N."_example
+$sql = "UPDATE  wcf1_example
         SET     bar = ?
         WHERE   exampleID = ?";
-$statement = \wcf\system\WCF::getDB()->prepareStatement($sql);
+$statement = \wcf\system\WCF::getDB()->prepare($sql);
 
 \wcf\system\WCF::getDB()->beginTransaction();
 foreach ($data as $exampleID => $bar) {
index 0032dec9de1b441692dd4ee02b8f624d1334815d..80039ad6f0a5067b822fa4a1ac27ce7913b2da35 100644 (file)
@@ -23,7 +23,7 @@ class LastActivityCronjob extends AbstractCronjob {
                 SET     user_table.lastActivityTime = session.lastActivityTime
                 WHERE   user_table.userID = session.userID
                     AND session.userID <> 0";
-        $statement = WCF::getDB()->prepareStatement($sql);
+        $statement = WCF::getDB()->prepare($sql);
         $statement->execute();
     }
 }
index 500c8210012f3bb8ecb6935053d2ee1639ea81cb..bcb3bab7af4e9ad3302e0c80c7ef69ada65da6b4 100644 (file)
@@ -11,12 +11,12 @@ class Box extends DatabaseObject {
      * @return Box|null
      */
     public static function getBoxByIdentifier($identifier) {
-        $sql = "SELECT *
-                       FROM    wcf".WCF_N."_box
-                       WHERE   identifier = ?";
-        $statement = WCF::getDB()->prepareStatement($sql);
+        $sql = "SELECT  *
+                FROM    wcf1_box
+                WHERE   identifier = ?";
+        $statement = WCF::getDB()->prepare($sql);
         $statement->execute([$identifier]);
 
         return $statement->fetchObject(self::class);
     }
-}
\ No newline at end of file
+}