SqlPreprocessor a divná podmínka if (strlen($value) > 20)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
chloris
Člen | 23
+
0
-

Může mi někdo objasnit smysl podmínky if (strlen($value) > 20)? Proč se nemůže libovolně dlouhý string vložit rovnou do SQL (provést s ním quote)?

https://api.nette.org/…sor.php.html#111


108:     private function formatValue($value)
109:     {
110:         if (is_string($value)) {
111:             if (strlen($value) > 20) {        // proč 20? co to je a komu to slouží, druhé straně?
112:                 $this->remaining[] = $value;
113:                 return '?';
114:
115:             } else {
116:                 return $this->connection->quote($value);
117:             }

Pak nejde použít můj firebird driver pro Nette Database který má kvůli nedostatkům v PDO ještě jednu podpůrnou connection přes ibase extension viz https://forum.nette.org/…lastinsertid.

paranoiq
Člen | 392
+
0
-

při vkládání „libovolně dlouhých“ stringů přímo do dotazu by mohlo dojít třeba k překročení limitu max_allowed_packet u Mysql. proto PDO dlouhé stringy zpracovává jinak (a doufejme, že efektivněji)