modifs.mineures sans commentaires
This commit is contained in:
		
							parent
							
								
									b6a3011fef
								
							
						
					
					
						commit
						ff6c5e8da4
					
				@ -280,11 +280,15 @@ EOT;
 | 
			
		||||
      # aucune modification
 | 
			
		||||
      return 0;
 | 
			
		||||
    } elseif ($insert) {
 | 
			
		||||
      $this->db()->exec([
 | 
			
		||||
      $id = $this->db()->exec([
 | 
			
		||||
        "insert",
 | 
			
		||||
        "into" => $tableName,
 | 
			
		||||
        "values" => $row,
 | 
			
		||||
      ]);
 | 
			
		||||
      if (count($primaryKeys) == 1 && $rowIds === null) {
 | 
			
		||||
        # mettre à jour avec l'id généré
 | 
			
		||||
        $values[$primaryKeys[0]] = $id;
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      $this->db()->exec([
 | 
			
		||||
        "update",
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,13 @@ interface IDatabase {
 | 
			
		||||
 | 
			
		||||
  function rollback(): void;
 | 
			
		||||
 | 
			
		||||
  /** @return int|bool en fonction des implémentations */
 | 
			
		||||
  /**
 | 
			
		||||
   * - si c'est un insert, retourner l'identifiant autogénéré de la ligne
 | 
			
		||||
   * - sinon retourner le nombre de lignes modifiées en cas de succès, ou false
 | 
			
		||||
   * en cas d'échec
 | 
			
		||||
   *
 | 
			
		||||
   * @return int|false
 | 
			
		||||
   */
 | 
			
		||||
  function exec($query, ?array $params=null);
 | 
			
		||||
 | 
			
		||||
  function get($query, ?array $params=null, bool $entireRow=false);
 | 
			
		||||
 | 
			
		||||
@ -255,4 +255,8 @@ abstract class _base {
 | 
			
		||||
 | 
			
		||||
  /** @var ?array */
 | 
			
		||||
  protected $meta;
 | 
			
		||||
 | 
			
		||||
  function isInsert(): bool {
 | 
			
		||||
    return ($this->meta["isa"] ?? null) === "insert";
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -125,7 +125,11 @@ class Pdo implements IDatabase {
 | 
			
		||||
    return $this->db()->exec($query);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /** @return int|false */
 | 
			
		||||
  private static function is_insert(?string $sql): bool {
 | 
			
		||||
    if ($sql === null) return false;
 | 
			
		||||
    return preg_match('/^\s*insert\b/i', $sql);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function exec($query, ?array $params=null) {
 | 
			
		||||
    $db = $this->db();
 | 
			
		||||
    $query = new _query_base($query, $params);
 | 
			
		||||
@ -134,7 +138,9 @@ class Pdo implements IDatabase {
 | 
			
		||||
      if ($query->isInsert()) return $db->lastInsertId();
 | 
			
		||||
      else return $stmt->rowCount();
 | 
			
		||||
    } else {
 | 
			
		||||
      return $db->exec($sql);
 | 
			
		||||
      $rowCount = $db->exec($sql);
 | 
			
		||||
      if (self::is_insert($sql)) return $db->lastInsertId();
 | 
			
		||||
      else return $rowCount;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -95,8 +95,4 @@ class _query_base extends _base {
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function isInsert(): bool {
 | 
			
		||||
    return ($this->meta["isa"] ?? null) === "insert";
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -146,7 +146,11 @@ class Sqlite implements IDatabase {
 | 
			
		||||
    return $this->db()->exec($query);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /** @return bool */
 | 
			
		||||
  private static function is_insert(?string $sql): bool {
 | 
			
		||||
    if ($sql === null) return false;
 | 
			
		||||
    return preg_match('/^\s*insert\b/i', $sql);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function exec($query, ?array $params=null) {
 | 
			
		||||
    $db = $this->db();
 | 
			
		||||
    $query = new _query_base($query, $params);
 | 
			
		||||
@ -154,12 +158,17 @@ class Sqlite implements IDatabase {
 | 
			
		||||
      try {
 | 
			
		||||
        $result = $stmt->execute();
 | 
			
		||||
        if ($result === false) return false;
 | 
			
		||||
        return $result->finalize();
 | 
			
		||||
        $result->finalize();
 | 
			
		||||
        if ($query->isInsert()) return $db->lastInsertRowID();
 | 
			
		||||
        else return $db->changes();
 | 
			
		||||
      } finally {
 | 
			
		||||
        $stmt->close();
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      return $db->exec($sql);
 | 
			
		||||
      $result = $db->exec($sql);
 | 
			
		||||
      if ($result === false) return false;
 | 
			
		||||
      if (self::is_insert($sql)) return $db->lastInsertRowID();
 | 
			
		||||
      else return $db->changes();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user