phpstan-dba icon indicating copy to clipboard operation
phpstan-dba copied to clipboard

error on sql-`IN()` and empty-array

Open staabm opened this issue 3 years ago • 0 comments
trafficstars

should error, as a sql error occurs when ids is an empty-array.

// should error
function inIDs(array $ids) {
  $pdo->query('SELECT email FROM ada WHERE adaid IN('. implode(',', $ids) .')', PDO::FETCH_ASSOC);
}

// should error
function inIDs(array $ids) {
  $stmt = $pdo->prepare('SELECT email FROM ada WHERE adaid IN(?)');
  $stmt->execute([implode(',', $ids)]);
}

// fine
/** @param non-empty-array $ids */
function inIDs(array $ids) {
  $pdo->query('SELECT email FROM ada WHERE adaid IN('. implode(',', $ids) .')', PDO::FETCH_ASSOC);
}

staabm avatar Feb 14 '22 15:02 staabm