I have written a lot of PHP over the years and PHP has gradually introduced type hints for function parameters and return values. For me this has reduced the number of type errors I have to almost zero and with that data errors.
The thing is with type errors in dynamic languages is that it usually hides an error branch. Example, we open a file handle with fopen(), it can return a handle or false on fail.
If that would fail (false) with old style PHP you could continue pass that false file handle to other file functions like fread(), fwrite() etc without knowing they all failed. So in this case there would be no data at all either to be transformed, mangled or inserted, it wouldn't exist at all because it couldn't be written, that is also a form of data pollution (fopen() can swapped with sqlite equivalent for the same argument)
How about types and preventing data pollution? Take dates as a good example. In old MySQL you could insert zero dates (0000-00-00) or invalid dates (2004-04-31), with better sql modes you can prevent that for happening, a type enforcement.
Having non existing dates in your database will give trouble in the future, how should you handle them for calculating something like time periods for subscriptions? Do you really take into account when writing your SQL query that some dates are not valid dates at all?
Having inherited lots of old PHP project I can't say enjoy the non-strict typing in both code and database, database columns are usually filled with all sorts of garbage, like 0,1, -1, 2, true, false, null, "NULL", "Yes", "No" or even localized strings "Ja", "Nej". This will always lead to more complicated SQL queries or code logic down the line.
The article argues that you can easily spot data pollution in a column, that assumes that the developer actually looks at it, but if everything "works" why should they?
I want to do the opposite and create my own types, assume that we accept user input and to make sure that the user input doesn't contain garbage I can create my own types, like MultiByteText255, AsciiText64, HtmlFragment etc and that should be enforced both in code and storage. These types can both enforce the contents of it and also make sure to properly store and output it. And if I want I can inherit to specialized types like UserName extends MultiByteText255. Everyone using functions that takes a UserName type is forced to adhere to it.