ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΊΡΡΡΠΎΡΠ° β PDO::FETCH_ORI_* β
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π·Π΄Π΅Π» Β«ΠΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΊΡΡΡΠΎΡΠ°Β».
| Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ | ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
PDO::FETCH_DEFAULT
|
Π‘Π»ΡΠΆΠ΅Π±Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. |
PDO::FETCH_ASSOC
|
ΠΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ°. |
PDO::FETCH_BOTH (ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ)
|
ΠΠ½Π΄Π΅ΠΊΡΠ½ΠΎ-Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΠΊΠ°ΠΊ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ, ΡΠ°ΠΊ ΠΈ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ°. |
PDO::FETCH_NAMED
|
ΠΠ°ΡΠΈΠ°Π½Ρ ΡΠ΅ΠΆΠΈΠΌΠ° PDO::FETCH_ASSOC, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΈ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ,
Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
|
PDO::FETCH_NUM
|
ΠΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ ΡΡΠΎΠ»Π±ΡΠ°. |
PDO::FETCH_COLUMN
|
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°. |
PDO::FETCH_KEY_PAIR
|
ΠΠ°ΡΡΠΈΠ² ΠΏΠ°Ρ Β«ΠΊΠ»ΡΡ β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β» Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ. |
PDO::FETCH_FUNC
|
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° callback-ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π΅ΠΆΠΈΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll(). |
PDO::FETCH_OBJ
|
ΠΠ±ΡΠ΅ΠΊΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° β stdClass. |
PDO::FETCH_CLASS
|
ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. |
ΠΠΏΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠ°
PDO::FETCH_CLASS.
| ΠΠΏΡΠΈΡ | ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
PDO::FETCH_CLASSTYPE
|
ΠΠΏΡΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π΅ΡΠ½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΊΠ»Π°ΡΡΠ°, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° Π² Π·Π°ΠΏΡΠΎΡΠ΅. |
PDO::FETCH_PROPS_LATE
|
ΠΠΏΡΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°. |
PDO::FETCH_SERIALIZE
|
ΠΠΏΡΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²Π΅ΡΠ½ΡΡΡ PHP-ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 8.1.0 ΠΎΠΏΡΠΈΡ ΡΡΡΠ°ΡΠ΅Π»Π°. |
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
| Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ | ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
PDO::FETCH_BOUND
|
ΠΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. |
PDO::FETCH_INTO
|
ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°. |
PDO::FETCH_LAZY
|
ΠΠ΅Π½ΠΈΠ²Π°Ρ Π²ΡΠ±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠ΅ΠΊΡ PDORow, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π· ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°ΠΊ ΠΈ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. |
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll() ΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π΄Π°ΡΡ ΠΏΠΎΠ»Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
| Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ | ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
PDO::FETCH_GROUP
|
ΠΡΡΠΏΠΏΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ. |
PDO::FETCH_UNIQUE
|
Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ. |
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΠΎΠ»Π±ΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Π΄Π²ΡΡ ΡΠ°Π±Π»ΠΈΡ Ρ ΠΎΠ΄Π½ΠΎΠΈΠΌΡΠ½Π½ΡΠΌΠΈ ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ.
ΠΠ°ΡΡΠΈΠ² ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΈΠΌΡΠ½Π½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ PHP-ΡΡΡΡΠΊΡΡΡΡ β ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ β Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ².
ΠΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π²Π΅ΡΠ½ΡΡΡΡ β Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ.
Π‘ΡΠΎΠ»Π±ΡΠ°ΠΌ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
SELECT table1.created_at AS t1_created_at,
table2.created_at AS t2_created_at
FROM table1
JOIN table2 ON table1.table2id = table2.id
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² PDO::FETCH_NAMED,
PDO::ATTR_FETCH_TABLE_NAMES
ΠΈ PDO::ATTR_FETCH_CATALOG_NAMES.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ PDO::ATTR_DEFAULT_FETCH_MODE
Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
ΠΌΠ΅ΡΠΎΠ΄Π° PDO::__construct()
ΠΈΠ»ΠΈ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° PDO::setAttribute()
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
Π·Π°ΠΏΡΠΎΡΠΎΠ².
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::setFetchMode().
ΠΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΡ
SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ
ΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ foreach.
ΠΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::setAttribute() Π½Π΅Π»ΡΠ·Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°. ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π°ΡΡΠΈΠ±ΡΡΡ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ, ΠΈ ΠΌΠΎΠ»ΡΠ° ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π».
Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Ρ PHP 8.0.7.
Π‘Π»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° PDOStatement. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠ°ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΡΡΡ ΠΊΠ»Π°ΡΡ
PDOStatement ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ
ΡΠ΅ΡΠ΅Π· Π°ΡΡΠΈΠ±ΡΡ PDO::ATTR_STATEMENT_CLASS ΠΊΠ°ΠΊ ΡΠΈΠΏ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π»ΡΠ·Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ
PDO::ATTR_DEFAULT_FETCH_MODE.
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_ASSOC Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²,
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ².
<?php
$stmt = $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_ASSOC);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[userid] => 104
[name] => Chris
[country] => Ukraine
)
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_BOTH Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎ-Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²,
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄ΡΠ±Π»ΠΈΡΡΠ΅ΡΡΡ: ΠΎΠ΄Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ°,
Π΄ΡΡΠ³ΠΎΠ΅ β Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ ΡΡΠΎΠ»Π±ΡΠ°.
ΠΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ 0 ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ Π·Π°ΠΏΡΠΎΡΠ°, Π° Π½Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠ°Π±Π»ΠΈΡΠ΅.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΡΡΡΠ΅ Π½Π΅ ΠΎΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΠΎΠ»Π±ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡ Π΅ΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅
SELECT *.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄ΡΡ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ ΡΡΠΎΠ»Π±ΡΠ°, Π΅ΡΠ»ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΡΠΎΠ»Π±ΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.
<?php
$stmt = $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_BOTH);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[id] => 104,
[0] => 104,
[name] => Chris,
[1] => Chris,
[country] => Ukraine,
[2] => Ukraine
)
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_NAMED ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌ
ΡΠ΅ΠΆΠΈΠΌΡ PDO::FETCH_ASSOC, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π²ΡΠ΅Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ°.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·Π΄Π΅Π» Β«ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΡΡΠΎΠ»Π±ΡΠΎΠ²Β».
ΠΠΎΡΡΠ΄ΠΎΠΊ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
<?php
$stmt = $pdo->query(
"SELECT users.*, referrer.name
FROM users
LEFT JOIN users AS referrer ON users.referred_by = referrer.userid
WHERE userid = 109"
);
$row = $stmt->fetch(\PDO::FETCH_NUM);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[userid] => 109
[name] => Array
(
[0] => Toni
[1] => Chris
)
[country] => Germany
[referred_by] = 104
)
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_NUM Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠΈ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π½ΠΎΠΌΠ΅ΡΡ ΡΡΠΎΠ»Π±ΡΠ°. ΠΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0 ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ
Π·Π°ΠΏΡΠΎΡΠ°, Π° Π½Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² ΡΠ°Π±Π»ΠΈΡΠ΅.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΡΡΠ΅ Π½Π΅ ΠΎΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΠΎΠ»Π±ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡ Π΅ΠΌΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅
SELECT *.
<?php
$stmt = $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_NUM);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[0] => 104
[1] => Chris
[2] => Ukraine
)
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_COLUMN Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°.
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° PDOStatement::setFetchMode()
ΠΈΠ»ΠΈ PDOStatement::fetchAll() ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ
ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅.
ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ ValueError, Π΅ΡΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ.
<?php
$stmt = $pdo->query("SELECT name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_COLUMN);
print_r($row);
$stmt = $pdo->query("SELECT name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_COLUMN, 1);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[0] => Chris
[1] => Jamie
[2] => Robin
)
Array
(
[0] => Ukraine
[1] => England
[2] => Germany
)
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_KEY_PAIR Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ°Ρ Β«ΠΊΠ»ΡΡ β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β»,
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ»ΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ. Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ 2 ΡΡΠΎΠ»Π±ΡΠ°.
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ Π²Π΅ΡΠ½ΡΡ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° PDOStatement::fetchAll().
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΡΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΡΡ.
<?php
$stmt = $pdo->query("SELECT name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_KEY_PAIR);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[Chris] => Ukraine
[Jamie] => England
[Robin] => Germany
)
Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°. Π Π΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ². ΠΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π Π΅ΠΆΠΈΠΌ
PDO::FETCH_GROUPΠ³ΡΡΠΏΠΏΠΈΡΡΠ΅Ρ, Π° ΡΠ΅ΠΆΠΈΠΌPDO::FETCH_UNIQUEΡΠ½ΠΈΠΊΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°.
<?php
function valueCreator($col1, $col2, $col3)
{
return [
'col1' => $col1,
'col2' => strtoupper($col2),
'col3' => $col3,
'customKey' => 'customValue',
];
}
$stmt = $pdo->query("SELECT userid, name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_FUNC, valueCreator(...));
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[0] => Array
(
[col1] => 104
[col2] => SAM
[col3] => Ukraine
[customKey] => customValue
)
[1] => Array
(
[col1] => 105
[col2] => JAMIE
[col3] => England
[customKey] => customValue
)
[2] => Array
(
[col1] => 107
[col2] => ROBIN
[col3] => Germany
[customKey] => customValue
)
)
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_OBJ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ stdClass.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° PDOStatement::fetchObject()
ΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° PDO::FETCH_CLASS.
<?php
$stmt = $pdo->query("SELECT userid, name, country FROM users");
$row = $stmt->fetch(\PDO::FETCH_OBJ);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
stdClass Object
(
[userid] => 104
[name] => Chris
[country] => Ukraine
)
Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»Π°Π³ΠΎΠ² ΠΎΠΏΡΠΈΠΉ.
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΡΡΠ°ΡΠ΅Π»ΠΎ ΠΈ Π½Π°ΡΠΈΠ½Π°Ρ Ρ PHP 9.0 Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° PDOStatement::fetchObject().
<?php
class TestEntity
{
public $userid;
public $name;
public $country;
public $referred_by_userid;
public function __construct()
{
print "ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: " . count(func_get_args()) . "\n";
print "Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? "
. (isset($this->name) ? 'ΠΠ°' : 'ΠΠ΅Ρ') . "\n";
}
}
$stmt = $db->query(
"SELECT userid, name, country, referred_by_userid FROM users"
);
$stmt->setFetchMode(PDO::FETCH_CLASS, TestEntity::class);
$result = $stmt->fetch();
var_dump($result);ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: 0
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? ΠΠ°
object(TestEntity)#3 (4) {
["userid"]=>
int(104)
["name"]=>
string(5) "Chris"
["country"]=>
string(7) "Ukraine"
["referred_by_userid"]=>
NULL
}
ΠΠΏΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ
PDO::FETCH_CLASS
ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°.
Π‘ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ PDO Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΊΠ»Π°ΡΡΠ°, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° Π² Π·Π°ΠΏΡΠΎΡΠ΅.
ΠΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΠ½Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ stdClass, Π±Π΅Π· Π²ΡΠ΄Π°ΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½.
<?php
class TestEntity
{
public $userid;
public $name;
public $country;
public $referred_by_userid;
public function __construct()
{
print "ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: " . count(func_get_args()) . "\n";
print "Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? "
. (isset($this->name) ? 'ΠΠ°' : 'ΠΠ΅Ρ') . "\n";
}
}
$stmt = $db->query(
"SELECT 'TestEntity', userid, name, country, referred_by_userid FROM users"
);
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE);
$result = $stmt->fetch();
var_dump($result);ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: 0
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? ΠΠ°
object(TestEntity)#3 (4) {
["userid"]=>
int(104)
["name"]=>
string(5) "Chris"
["country"]=>
string(7) "Ukraine"
["referred_by_userid"]=>
NULL
}
ΠΠΏΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ
PDO::FETCH_CLASS
ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°.
Π‘ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²ΠΎΠΉΡΡΠ².
<?php
class TestEntity
{
public $userid;
public $name;
public $country;
public $referred_by_userid;
public function __construct()
{
print "ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: " . count(func_get_args()) . "\n";
print "Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? "
. (isset($this->name) ? 'ΠΠ°' : 'ΠΠ΅Ρ') . "\n";
}
}
$stmt = $db->query(
"SELECT userid, name, country, referred_by_userid FROM users"
);
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, TestEntity::class);
$result = $stmt->fetch();
var_dump($result);ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: 0
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? ΠΠ΅Ρ
object(TestEntity)#3 (4) {
["userid"]=>
int(104)
["name"]=>
string(5) "Chris"
["country"]=>
string(7) "Ukraine"
["referred_by_userid"]=>
NULL
}
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 8.1.0 ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π£Π‘Π’ΠΠ ΠΠΠ. ΠΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ.
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ
Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_CLASS
ΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°.
Π Π΅ΠΆΠΈΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Serializable.
Π Π΅ΠΆΠΈΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΌΠΈ ΡΡΡΠΎΠΊΠΈ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ serialize().
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
<?php
class TestEntity implements Serializable
{
public $userid;
public $name;
public $country;
public $referred_by_userid;
public function __construct()
{
print "ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: " . count(func_get_args()) . "\n";
print "Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? "
. (isset($this->name) ? 'ΠΠ°' : 'ΠΠ΅Ρ') . "\n";
}
public function serialize()
{
return join(
"|",
[$this->userid, $this->name, $this->country, $this->referred_by_userid]
);
}
public function unserialize(string $data)
{
$parts = explode("|", $data);
$this->userid = (int) $parts[0];
$this->name = $parts[1];
$this->country = $parts[2];
$refId = $parts[3];
$this->referred_by_userid = ($refId === "" ? null : (int) $refId);
}
}
print "ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ (ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ):\n";
$db->exec(
"CREATE TABLE serialize (
sdata TEXT
)"
);
$origObj = new TestEntity();
$origObj->userid = 200;
$origObj->name = 'Seri';
$origObj->country = 'Syria';
$origObj->referred_by_userid = null;
$insert = $db->prepare("INSERT INTO serialize (sdata) VALUES (:sdata)");
$insert->execute(['sdata' => $origObj->serialize()]);
print "\nΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:\n";
$query = "SELECT sdata FROM serialize";
$stmt = $db->query($query);
// ΠΠ ΠΠΠΠ§ΠΠΠΠ: ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ!
$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_SERIALIZE, TestEntity::class);
$result = $stmt->fetch();
var_dump($result);ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
Deprecated: TestEntity implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in Standard input code on line 2
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ (ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ):
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ·Π²Π°Π»ΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²: 0
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°? ΠΠ΅Ρ
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Deprecated: PDOStatement::setFetchMode(): The PDO::FETCH_SERIALIZE mode is deprecated in Standard input code on line 58
Deprecated: PDOStatement::fetch(): The PDO::FETCH_SERIALIZE mode is deprecated in Standard input code on line 59
object(TestEntity)#5 (4) {
["userid"]=>
int(200)
["name"]=>
string(4) "Seri"
["country"]=>
string(5) "Syria"
["referred_by_userid"]=>
NULL
}
ΠΠΏΡΠΈΡ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
Π‘ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠ΅ΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π°ΠΏΡΡΠΌΡΡ, Π° ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ,
ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::bindColumn().
ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΠ±ΠΎΡΠΊΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΡ SQL-ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°.
<?php
$query = "SELECT users.userid, users.name, users.country, referrer.name
FROM users
LEFT JOIN users AS referrer ON users.referred_by_userid = referrer.userid";
$stmt = $db->prepare($query);
$stmt->execute();
$stmt->bindColumn('userid', $userId);
$stmt->bindColumn('name', $name);
$stmt->bindColumn('country', $country);
// Π‘Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΡΠΎΠ»Π±ΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ°.
// Π Π»ΡΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° ΡΠΊΠ°Π·Π°ΡΡ Π² SQL-Π·Π°ΠΏΡΠΎΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ,
// ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠ»ΠΎΠΌΠ°ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠ°,
// Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: referrer.name AS referrer_name
$stmt->bindColumn(4, $referrerName);
while ($stmt->fetch(\PDO::FETCH_BOUND)) {
print join("\t", [$userId, $name, $country, ($referrerName ?? 'NULL')]) . "\n";
}Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
104 Chris Ukraine NULL 105 Jamie England NULL 107 Robin Germany Chris 108 Sean Ukraine NULL 109 Toni Germany NULL 110 Toni Germany NULL
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΠΎΡΠΊΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΡΡΠ°ΡΠ΅Π»ΠΎ ΠΈ Π½Π°ΡΠΈΠ½Π°Ρ Ρ PHP 9.0 Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ.
Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ public, Π° Π·Π°ΡΠΈΡΡΠ½Π½ΡΠ΅ ΠΈ Π·Π°ΠΊΡΡΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ, ΠΏΠΎΠΏΡΡΠΊΠ° ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ readonly Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΠ°ΡΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π΅Π· Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° PDOStatement::setFetchMode() ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
<?php
class TestEntity
{
public $userid;
public $name;
public $country;
public $referred_by_userid;
}
$obj = new TestEntity();
$stmt = $db->query("SELECT userid, name, country, referred_by_userid FROM users");
$stmt->setFetchMode(\PDO::FETCH_INTO, $obj);
$result = $stmt->fetch();
var_dump($result);ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°:
object(TestEntity)#3 (4) {
["userid"]=>
int(104)
["name"]=>
string(5) "Chris"
["country"]=>
string(7) "Ukraine"
["referred_by_userid"]=>
NULL
}
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
Π Π΅ΠΆΠΈΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ PDORow, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ
ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π· ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°ΠΊ ΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΡΠ΅ΡΠ°Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΡΠ΅ΠΆΠΈΠΌΠΎΠ² PDO::FETCH_BOTH ΠΈ PDO::FETCH_OBJ.
Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ
Β«Π»Π΅Π½ΠΈΠ²ΡΠΌΒ» ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ β Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅.
ΠΠ΅Π½ΠΈΠ²ΠΎΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½Π΅Π±ΡΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠ°ΠΌΡΡΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ PHP. ΠΡΡΠ΅ΡΠΈΠ·ΡΠ΅Ρ Π»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ PDO ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ PDORow
Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL, Π±Π΅Π· ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΠΈΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ, ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ PDORow ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
<?php
$stmt = $db->query("SELECT userid, name, country, referred_by_userid FROM users");
$result = $stmt->fetch(\PDO::FETCH_LAZY);
print "ID: " . $result[0] . "\n";
print "Name: {$result->name}\n";
print "Country: " . $result['country'] . "\n";
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ NULL. ΠΠ΅Π· Π²ΡΠ΄Π°ΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ.
print "ΠΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ: " . var_export($result->does_not_exist, true) . "\n";
$differentResult = $stmt->fetch(\PDO::FETCH_LAZY);
// ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ PDORow ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π²Π½ΠΎΠ²Ρ ΠΈΠ·Π²Π»Π΅ΡΡΠ½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
print "ID: " . $result[0] . "\n";Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
ID: 104 Name: Chris Country: Ukraine ΠΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ: NULL ID: 105
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_GROUP Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΏΠΈΡΠΊΠΈ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²,
ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°. ΠΠ»Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ,
ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎ Π½Π΅ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ.
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
ΠΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_UNIQUE
ΠΎΠ±Π° ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ:
PDO::FETCH_ASSOC, PDO::FETCH_BOTH,
PDO::FETCH_NAMED, PDO::FETCH_NUM,
PDO::FETCH_COLUMN
ΠΈΠ»ΠΈ PDO::FETCH_FUNC.
ΠΠ±ΡΠ΅ΠΊΡ PDOStatement ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΠΆΠΈΠΌΠ° Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ Π·Π°Π΄Π°Π»ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°.
<?php
$stmt = $pdo->query("SELECT country, userid, name FROM users");
$row = $stmt->fetchAll(\PDO::FETCH_GROUP | \PDO::FETCH_ASSOC);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[Ukraine] => Array
(
[0] => Array
(
[userid] => 104
[name] => Chris
)
[1] => Array
(
[userid] => 108
[name] => Sean
)
)
[England] => Array
(
[0] => Array
(
[userid] => 105
[name] => Jamie
)
)
[Germany] => Array
(
[0] => Array
(
[userid] => 107
[name] => Robin
)
[1] => Array
(
[userid] => 109
[name] => Toni
)
)
)
Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎΡΡΡΠΎΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΡΠΎΡΡΠ°Π² ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ° ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
<?php
$stmt = $pdo->query("SELECT country, userid, name, country FROM users");
$row = $stmt->fetchAll(\PDO::FETCH_GROUP | \PDO::FETCH_ASSOC);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[Ukraine] => Array
(
[0] => Array
(
[userid] => 104
[name] => Chris
[country] => Ukraine
)
[1] => Array
(
[userid] => 108
[name] => Sean
[country] => Ukraine
)
)
[England] => Array
(
[0] => Array
(
[userid] => 105
[name] => Jamie
[country] => England
)
)
[Germany] => Array
(
[0] => Array
(
[userid] => 107
[name] => Robin
[country] => Germany
)
[1] => Array
(
[userid] => 109
[name] => Toni
[country] => Germany
)
)
)
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ PDO::FETCH_UNIQUE Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ,
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ
Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ PDOStatement::fetchAll().
ΠΡΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ PDO::FETCH_GROUP
ΠΎΠ±Π° ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΡΠΎΠ»Π±ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
Π Π΅ΠΆΠΈΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡΡ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌΠΈ:
PDO::FETCH_ASSOC, PDO::FETCH_BOTH,
PDO::FETCH_NAMED, PDO::FETCH_NUM,
PDO::FETCH_COLUMN
ΠΈΠ»ΠΈ PDO::FETCH_FUNC.
ΠΠ±ΡΠ΅ΠΊΡ PDOStatement ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ Π·Π°Π΄Π°Π»ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠΌ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ID ΡΠ΅ΠΆΠΈΠΌ Π±ΡΡΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΠ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠΈ Π²ΡΠ±ΠΎΡΠΊΠ΅ ΠΈΠ· Π½Π΅ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΡΡΡΡΡ. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΡΡ.
Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π»ΡΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π² SQL-Π·Π°ΠΏΡΠΎΡΠ΅, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡ ΠΏΠ»Π°Π½ Π·Π°ΠΏΡΠΎΡΠ° Ρ ΡΡΡΡΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΊΠΎΠΌΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠ±ΠΎΡΠΊΠ° ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°.
<?php
$stmt = $pdo->query("SELECT userid, name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_UNIQUE | \PDO::FETCH_ASSOC);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[104] => Array
(
[name] => Chris
[country] => Ukraine
)
[105] => Array
(
[name] => Jamie
[country] => England
)
[107] => Array
(
[name] => Robin
[country] => Germany
)
)
Π ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎΡΡΡΠΎΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π½Π΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΡΠΎΡΡΠ°Π² ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠ° ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
<?php
$stmt = $pdo->query("SELECT userid, userid, name, country FROM users LIMIT 3");
$row = $stmt->fetchAll(\PDO::FETCH_UNIQUE | \PDO::FETCH_ASSOC);
print_r($row);Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
Array
(
[104] => Array
(
[userid] => 104
[name] => Chris
[country] => Ukraine
)
[105] => Array
(
[userid] => 105
[name] => Jamie
[country] => England
)
[107] => Array
(
[userid] => 107
[name] => Robin
[country] => Germany
)
)