Ticket #49477: 49477.diff
| File 49477.diff, 53.4 KB (added by , 6 years ago) |
|---|
-
src/wp-includes/wp-db.php
1 1 <?php 2 2 /** 3 * WordPress DB Class3 * WordPress database access abstraction class 4 4 * 5 5 * Original code from {@link http://php.justinvincent.com Justin Vincent (justin@visunet.ie)} 6 6 * … … 37 37 define( 'ARRAY_N', 'ARRAY_N' ); 38 38 39 39 /** 40 * WordPress Database Access Abstraction Object40 * WordPress database access abstraction class 41 41 * 42 * It is possible to replace this class with your own 43 * by setting the $wpdb global variable in wp-content/db.php 44 * file to your class. The wpdb class will still be included, 45 * so you can extend it or simply use your own. 42 * This class is used to interact with a database without needing to use raw SQL statements. By default, WordPress 43 * uses this class to instantiate the global $wpdb object, providing access to the WordPress database. 46 44 * 47 * @link https:// codex.wordpress.org/Function_Reference/wpdb_Class45 * @link https://developer.wordpress.org/reference/classes/wpdb/ 48 46 * 49 47 * @since 0.71 50 48 */ … … 53 51 /** 54 52 * Whether to show SQL/DB errors. 55 53 * 56 * Default behavior is to show errors if both WP_DEBUG and WP_DEBUG_DISPLAY 57 * evaluated to true. 54 * Default is to show errors if both WP_DEBUG and WP_DEBUG_DISPLAY evaluated to true. 58 55 * 59 56 * @since 0.71 60 57 * @var bool … … 62 59 var $show_errors = false; 63 60 64 61 /** 65 * Whether to suppress errors during the DB bootstrapping. 62 * Whether to suppress errors during the DB bootstrapping. Default is false. 66 63 * 67 64 * @since 2.5.0 68 65 * @var bool … … 70 67 var $suppress_errors = false; 71 68 72 69 /** 73 * The last error duringquery.70 * The last error encountered during the last query. 74 71 * 75 72 * @since 2.5.0 76 73 * @var string … … 78 75 public $last_error = ''; 79 76 80 77 /** 81 * Amount of queries made78 * The number of queries made. 82 79 * 83 80 * @since 1.2.0 84 81 * @var int … … 86 83 public $num_queries = 0; 87 84 88 85 /** 89 * Count of rows returned by previous query86 * Count of rows returned by the last query. 90 87 * 91 88 * @since 0.71 92 89 * @var int … … 94 91 public $num_rows = 0; 95 92 96 93 /** 97 * Count of affected rows by previous query94 * Count of rows affected by the last query. 98 95 * 99 96 * @since 0.71 100 97 * @var int … … 102 99 var $rows_affected = 0; 103 100 104 101 /** 105 * The ID generated for an AUTO_INCREMENT column by the previousquery (usually INSERT).102 * The ID generated for an AUTO_INCREMENT column by the last query (usually INSERT). 106 103 * 107 104 * @since 0.71 108 105 * @var int … … 110 107 public $insert_id = 0; 111 108 112 109 /** 113 * Last query made110 * The last query made. 114 111 * 115 112 * @since 0.71 116 113 * @var string … … 118 115 var $last_query; 119 116 120 117 /** 121 * Results of the last query made118 * Results of the last query. 122 119 * 123 120 * @since 0.71 124 121 * @var array|null … … 134 131 protected $result; 135 132 136 133 /** 137 * Cached column info, for sanity checking data before inserting 134 * Cached column info, for sanity checking data before inserting. 138 135 * 139 136 * @since 4.2.0 140 137 * @var array … … 142 139 protected $col_meta = array(); 143 140 144 141 /** 145 * Calculated character sets on tables 142 * Calculated character sets on tables. 146 143 * 147 144 * @since 4.2.0 148 145 * @var array … … 150 147 protected $table_charset = array(); 151 148 152 149 /** 153 * Whether text fields in the current query need to be sanity checked. 150 * Whether text fields in the current query need to be sanity checked. Default is false. 154 151 * 155 152 * @since 4.2.0 156 153 * @var bool … … 167 164 private $checking_collation = false; 168 165 169 166 /** 170 * Saved info on the table column 167 * Saved info on the table column. 171 168 * 172 169 * @since 0.71 173 170 * @var array … … 199 196 var $queries; 200 197 201 198 /** 202 * The number of times to retry reconnecting before dying. 199 * The number of times to retry reconnecting before dying. Default is 5. 203 200 * 204 201 * @since 3.9.0 205 202 * @see wpdb::check_connection() … … 210 207 /** 211 208 * WordPress table prefix 212 209 * 213 * You can set this to have multiple WordPress installations 214 * in a single database. The second reason is for possible 215 * security precautions. 210 * You can set this to have multiple WordPress installations in a single database. 211 * The second reason is for possible security precautions. 216 212 * 217 213 * @since 2.5.0 218 214 * @var string … … 252 248 public $siteid = 0; 253 249 254 250 /** 255 * List of WordPress per-blog tables 251 * List of WordPress per-blog tables. 256 252 * 257 253 * @since 2.5.0 258 254 * @see wpdb::tables() … … 272 268 ); 273 269 274 270 /** 275 * List of deprecated WordPress tables 271 * List of deprecated WordPress tables. 276 272 * 277 * categories, post2cat, and link2cat were deprecated in 2.3.0, db version 5539 273 * categories, post2cat, and link2cat were deprecated in 2.3.0, db version 5539. 278 274 * 279 275 * @since 2.9.0 280 276 * @see wpdb::tables() … … 283 279 var $old_tables = array( 'categories', 'post2cat', 'link2cat' ); 284 280 285 281 /** 286 * List of WordPress global tables 282 * List of WordPress global tables. 287 283 * 288 284 * @since 3.0.0 289 285 * @see wpdb::tables() … … 292 288 var $global_tables = array( 'users', 'usermeta' ); 293 289 294 290 /** 295 * List of Multisite global tables 291 * List of Multisite global tables. 296 292 * 297 293 * @since 3.0.0 298 294 * @see wpdb::tables() … … 309 305 ); 310 306 311 307 /** 312 * WordPress Comments table 308 * WordPress Comments table. 313 309 * 314 310 * @since 1.5.0 315 311 * @var string … … 317 313 public $comments; 318 314 319 315 /** 320 * WordPress Comment Metadata table 316 * WordPress Comment Metadata table. 321 317 * 322 318 * @since 2.9.0 323 319 * @var string … … 325 321 public $commentmeta; 326 322 327 323 /** 328 * WordPress Links table 324 * WordPress Links table. 329 325 * 330 326 * @since 1.5.0 331 327 * @var string … … 333 329 public $links; 334 330 335 331 /** 336 * WordPress Options table 332 * WordPress Options table. 337 333 * 338 334 * @since 1.5.0 339 335 * @var string … … 341 337 public $options; 342 338 343 339 /** 344 * WordPress Post Metadata table 340 * WordPress Post Metadata table. 345 341 * 346 342 * @since 1.5.0 347 343 * @var string … … 349 345 public $postmeta; 350 346 351 347 /** 352 * WordPress Posts table 348 * WordPress Posts table. 353 349 * 354 350 * @since 1.5.0 355 351 * @var string … … 357 353 public $posts; 358 354 359 355 /** 360 * WordPress Terms table 356 * WordPress Terms table. 361 357 * 362 358 * @since 2.3.0 363 359 * @var string … … 365 361 public $terms; 366 362 367 363 /** 368 * WordPress Term Relationships table 364 * WordPress Term Relationships table. 369 365 * 370 366 * @since 2.3.0 371 367 * @var string … … 373 369 public $term_relationships; 374 370 375 371 /** 376 * WordPress Term Taxonomy table 372 * WordPress Term Taxonomy table. 377 373 * 378 374 * @since 2.3.0 379 375 * @var string … … 393 389 // 394 390 395 391 /** 396 * WordPress User Metadata table 392 * WordPress User Metadata table. 397 393 * 398 394 * @since 2.3.0 399 395 * @var string … … 401 397 public $usermeta; 402 398 403 399 /** 404 * WordPress Users table 400 * WordPress Users table. 405 401 * 406 402 * @since 1.5.0 407 403 * @var string … … 409 405 public $users; 410 406 411 407 /** 412 * Multisite Blogs table 408 * Multisite Blogs table. 413 409 * 414 410 * @since 3.0.0 415 411 * @var string … … 417 413 public $blogs; 418 414 419 415 /** 420 * Multisite Blog Metadata table 416 * Multisite Blog Metadata table. 421 417 * 422 418 * @since 5.1.0 423 419 * @var string … … 425 421 public $blogmeta; 426 422 427 423 /** 428 * Multisite Registration Log table 424 * Multisite Registration Log table. 429 425 * 430 426 * @since 3.0.0 431 427 * @var string … … 433 429 public $registration_log; 434 430 435 431 /** 436 * Multisite Signups table 432 * Multisite Signups table. 437 433 * 438 434 * @since 3.0.0 439 435 * @var string … … 441 437 public $signups; 442 438 443 439 /** 444 * Multisite Sites table 440 * Multisite Sites table. 445 441 * 446 442 * @since 3.0.0 447 443 * @var string … … 449 445 public $site; 450 446 451 447 /** 452 * Multisite Sitewide Terms table 448 * Multisite Sitewide Terms table. 453 449 * 454 450 * @since 3.0.0 455 451 * @var string … … 457 453 public $sitecategories; 458 454 459 455 /** 460 * Multisite Site Metadata table 456 * Multisite Site Metadata table. 461 457 * 462 458 * @since 3.0.0 463 459 * @var string … … 480 476 public $field_types = array(); 481 477 482 478 /** 483 * Database table columns charset 479 * Database table columns charset. 484 480 * 485 481 * @since 2.2.0 486 482 * @var string … … 488 484 public $charset; 489 485 490 486 /** 491 * Database table columns collate 487 * Database table columns collate. 492 488 * 493 489 * @since 2.2.0 494 490 * @var string … … 496 492 public $collate; 497 493 498 494 /** 499 * Database Username 495 * Database Username. 500 496 * 501 497 * @since 2.9.0 502 498 * @var string … … 504 500 protected $dbuser; 505 501 506 502 /** 507 * Database Password 503 * Database Password. 508 504 * 509 505 * @since 3.1.0 510 506 * @var string … … 512 508 protected $dbpassword; 513 509 514 510 /** 515 * Database Name 511 * Database Name. 516 512 * 517 513 * @since 3.1.0 518 514 * @var string … … 520 516 protected $dbname; 521 517 522 518 /** 523 * Database Host 519 * Database Host. 524 520 * 525 521 * @since 3.1.0 526 522 * @var string … … 528 524 protected $dbhost; 529 525 530 526 /** 531 * Database Handle 527 * Database Handle. 532 528 * 533 529 * @since 0.71 534 530 * @var string … … 536 532 protected $dbh; 537 533 538 534 /** 539 * A textual description of the last query/get_row/get_var call 535 * A textual description of the last query/get_row/get_var call. 540 536 * 541 537 * @since 3.0.0 542 538 * @var string … … 572 568 ); 573 569 574 570 /** 575 * Whether to use mysqli over mysql. 571 * Whether to use mysqli over mysql. Default is false. 576 572 * 577 573 * @since 3.9.0 578 574 * @var bool … … 580 576 private $use_mysqli = false; 581 577 582 578 /** 583 * Whether we've managed to successfully connect at some point 579 * Whether we've managed to successfully connect at some point. 584 580 * 585 581 * @since 3.9.0 586 582 * @var bool … … 588 584 private $has_connected = false; 589 585 590 586 /** 591 * Connects to the database server and selects a database 587 * Connects to the database server and selects a database. 592 588 * 593 * PHP5 style constructor for compatibility with PHP5. Does 594 * the actual setting up of the class properties and connection 595 * to the database. 589 * PHP5 style constructor for compatibility with PHP5. Does the actual setting up of the class properties and 590 * connection to the database. 596 591 * 597 592 * @link https://core.trac.wordpress.org/ticket/3354 598 593 * @since 2.0.8 599 594 * 600 * @global string $wp_version The WordPress version string.595 * @global string $wp_version 601 596 * 602 * @param string $dbuser MySQL database user 603 * @param string $dbpassword MySQL database password 604 * @param string $dbname MySQL database name 605 * @param string $dbhost MySQL database host 597 * @param string $dbuser MySQL database user. 598 * @param string $dbpassword MySQL database password. 599 * @param string $dbname MySQL database name. 600 * @param string $dbhost MySQL database host. 606 601 */ 607 602 public function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { 608 603 if ( WP_DEBUG && WP_DEBUG_DISPLAY ) { … … 636 631 * 637 632 * @since 3.5.0 638 633 * 639 * @param string $name The private member to get, and optionally process 640 * @return mixed The private member634 * @param string $name The private member to get, and optionally process. 635 * @return mixed The private member. 641 636 */ 642 637 public function __get( $name ) { 643 638 if ( 'col_info' === $name ) { … … 652 647 * 653 648 * @since 3.5.0 654 649 * 655 * @param string $name The private member to set 656 * @param mixed $value The value to set 650 * @param string $name The private member to set. 651 * @param mixed $value The value to set. 657 652 */ 658 653 public function __set( $name, $value ) { 659 654 $protected_members = array( … … 672 667 * 673 668 * @since 3.5.0 674 669 * 675 * @param string $name The private member to check 670 * @param string $name The private member to check. 676 671 * 677 * @return bool If the member is set or not672 * @return bool If the member is set or not. 678 673 */ 679 674 public function __isset( $name ) { 680 675 return isset( $this->$name ); … … 730 725 * 731 726 * @param string $charset The character set to check. 732 727 * @param string $collate The collation to check. 733 * @return array { 734 * The most appropriate character set and collation to use. 735 * 736 * @type string $charset Character set. 737 * @type string $collate Collation. 738 * } 728 * @return array The most appropriate character set and collation to use. 739 729 */ 740 730 public function determine_charset( $charset, $collate ) { 741 731 if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) { … … 773 763 * 774 764 * @since 3.1.0 775 765 * 776 * @param resource $dbh The resource given by mysql_connect 766 * @param resource $dbh The resource given by mysql_connect. 777 767 * @param string $charset Optional. The character set. Default null. 778 768 * @param string $collate Optional. The collation. Default null. 779 769 */ … … 817 807 /** 818 808 * Change the current SQL mode, and ensure its WordPress compatibility. 819 809 * 820 * If no modes are passed, it will ensure the current MySQL server 821 * modes are compatible. 810 * If no modes are passed, it will ensure the current MySQL server modes are compatible. 822 811 * 823 812 * @since 3.9.0 824 813 * … … 886 875 * 887 876 * @param string $prefix Alphanumeric name for the new prefix. 888 877 * @param bool $set_table_names Optional. Whether the table names, e.g. wpdb::$posts, should be updated or not. 889 * @return string|WP_Error Old prefix or WP_Error on error878 * @return string|WP_Error Old prefix or WP_Error on error. 890 879 */ 891 880 public function set_prefix( $prefix, $set_table_names = true ) { 892 881 … … 931 920 * 932 921 * @param int $blog_id 933 922 * @param int $network_id Optional. 934 * @return int previous blog id923 * @return int previous blog id. 935 924 */ 936 925 public function set_blog_id( $blog_id, $network_id = 0 ) { 937 926 if ( ! empty( $network_id ) ) { … … 959 948 * 960 949 * @since 3.0.0 961 950 * @param int $blog_id Optional. 962 * @return string Blog prefix.951 * @return string Blog prefix. 963 952 */ 964 953 public function get_blog_prefix( $blog_id = null ) { 965 954 if ( is_multisite() ) { … … 980 969 /** 981 970 * Returns an array of WordPress tables. 982 971 * 983 * Also allows for the CUSTOM_USER_TABLE and CUSTOM_USER_META_TABLE to 984 * override the WordPress users and usermeta tables that would otherwise 985 * be determined by the prefix. 972 * Also allows for the CUSTOM_USER_TABLE and CUSTOM_USER_META_TABLE to override the WordPress users and usermeta 973 * tables that would otherwise be determined by the prefix. 986 974 * 987 * The scope argument can take one of the following:975 * The $scope argument can take one of the following: 988 976 * 989 977 * 'all' - returns 'all' and 'global' tables. No old tables are returned. 990 978 * 'blog' - returns the blog-level tables for the queried blog. … … 1002 990 * @param bool $prefix Optional. Whether to include table prefixes. Default true. If blog 1003 991 * prefix is requested, then the custom users and usermeta tables will be mapped. 1004 992 * @param int $blog_id Optional. The blog_id to prefix. Defaults to wpdb::$blogid. Used only when prefix is requested. 1005 * @return array Table names. When a prefix is requested, the key is the unprefixed table name.993 * @return array Table names. When a prefix is requested, the key is the unprefixed table name. 1006 994 */ 1007 995 public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) { 1008 996 switch ( $scope ) { … … 1062 1050 /** 1063 1051 * Selects a database using the current database connection. 1064 1052 * 1065 * The database name will be changed based on the current database 1066 * connection. On failure, the execution will bail and display anDB error.1053 * The database name will be changed based on the current database connection. On failure, the execution will 1054 * bail and display a DB error. 1067 1055 * 1068 1056 * @since 0.71 1069 1057 * … … 1149 1137 * @see mysql_real_escape_string() 1150 1138 * @since 2.8.0 1151 1139 * 1152 * @param string $string to escape1153 * @return string escaped1140 * @param string $string String to escape. 1141 * @return string Escaped string. 1154 1142 */ 1155 1143 function _real_escape( $string ) { 1156 1144 if ( $this->dbh ) { … … 1177 1165 * Escape data. Works on arrays. 1178 1166 * 1179 1167 * @uses wpdb::_real_escape() 1180 * @since 2.8.01168 * @since 2.8.0 1181 1169 * 1182 * @param string|array $data 1183 * @return string|array escaped1170 * @param string|array $data Data to escape. 1171 * @return string|array Escaped data, in the same type as supplied. 1184 1172 */ 1185 1173 public function _escape( $data ) { 1186 1174 if ( is_array( $data ) ) { … … 1231 1219 } 1232 1220 1233 1221 /** 1234 * Escapes content by reference for insertion into the database, for security 1222 * Escapes content by reference for insertion into the database, for security. 1235 1223 * 1236 1224 * @uses wpdb::_real_escape() 1237 1225 * 1238 1226 * @since 2.3.0 1239 1227 * 1240 * @param string $string to escape1228 * @param string $string String to escape. 1241 1229 */ 1242 1230 public function escape_by_ref( &$string ) { 1243 1231 if ( ! is_float( $string ) ) { … … 1246 1234 } 1247 1235 1248 1236 /** 1249 * Prepares a SQL query for safe execution. Uses sprintf()-like syntax.1237 * Prepares a SQL query for safe execution. 1250 1238 * 1251 * The following placeholders can be used in the query string:1239 * Uses sprintf()-like syntax. The following placeholders can be used in the query string: 1252 1240 * %d (integer) 1253 1241 * %f (float) 1254 1242 * %s (string) 1255 1243 * 1256 * All placeholders MUST be left unquoted in the query string. A corresponding argument 1257 * MUST be passed for eachplaceholder.1244 * All placeholders MUST be left unquoted in the query string. A corresponding argument MUST be passed for each 1245 * placeholder. 1258 1246 * 1259 * For compatibility with old behavior, numbered or formatted string placeholders (eg, %1$s, %5s)1260 * will not have quotes added by this function, so should be passed with appropriate quotes around1261 * them for your usage.1247 * Note: There is one exception to the above: for compatibility with old behavior, older-style numbered or formatted 1248 * string placeholders (eg, %1$s, %5s) will not have quotes added by this function, so should be passed with 1249 * appropriate quotes around them. 1262 1250 * 1263 1251 * Literal percentage signs (%) in the query string must be written as %%. Percentage wildcards (for example, 1264 1252 * to use in LIKE syntax) must be passed via a substitution argument containing the complete LIKE string, these 1265 1253 * cannot be inserted directly in the query string. Also see wpdb::esc_like(). 1266 1254 * 1267 * Arguments may be passed as individual arguments to the method, or as a single array containing 1268 * all arguments.A combination of the two is not supported.1255 * Arguments may be passed as individual arguments to the method, or as a single array containing all arguments. 1256 * A combination of the two is not supported. 1269 1257 * 1270 1258 * Examples: 1271 1259 * $wpdb->prepare( "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d OR `other_field` LIKE %s", array( 'foo', 1337, '%bar' ) ); … … 1277 1265 * by updating the function signature. The second parameter was changed 1278 1266 * from `$args` to `...$args`. 1279 1267 * 1280 * @param string $query Query statement with sprintf()-like placeholders 1281 * @param array|mixed $args The array of variables to substitute into the query's placeholders 1282 * if being called with an array of arguments, or the first variable 1283 * to substitute into the query's placeholders if being called with 1268 * @param string $query Query statement with sprintf()-like placeholders. 1269 * @param array|mixed $args The array of variables to substitute into the query's placeholders if being called 1270 * with an array of arguments, or the first variable to substitute into the query's 1271 * placeholders if being called with individual arguments. 1272 * @param mixed ...$args Further variables to substitute into the query's placeholders if being called with 1284 1273 * individual arguments. 1285 * @param mixed ...$args Further variables to substitute into the query's placeholders 1286 * if being called with individual arguments. 1287 * @return string|void Sanitized query string, if there is a query to prepare. 1274 * 1275 * @return string|void Sanitized query string, if there is a query to prepare. 1288 1276 */ 1289 1277 public function prepare( $query, ...$args ) { 1290 1278 if ( is_null( $query ) ) { … … 1412 1400 * 1413 1401 * @param string $text The raw text to be escaped. The input typed by the user should have no 1414 1402 * extra or deleted slashes. 1415 * @return string Text in the form of a LIKE phrase. The output is not SQL safe. Call $wpdb::prepare()1416 * or real_escape next.1403 * @return string Text in the form of a LIKE phrase. The output is not SQL safe. Call $wpdb::prepare() 1404 * or real_escape next. 1417 1405 */ 1418 1406 public function esc_like( $text ) { 1419 1407 return addcslashes( $text, '_%\\' ); … … 1423 1411 * Print SQL/DB error. 1424 1412 * 1425 1413 * @since 0.71 1426 * @global array $EZSQL_ERROR Stores error information of query and error string .1414 * @global array $EZSQL_ERROR Stores error information of query and error string 1427 1415 * 1428 * @param string $str The error to display .1429 * @return void|false Void if the showing of errors is enabled, false ifdisabled.1416 * @param string $str The error to display 1417 * @return false|void False if the showing of errors is disabled. 1430 1418 */ 1431 1419 public function print_error( $str = '' ) { 1432 1420 global $EZSQL_ERROR; … … 1496 1484 /** 1497 1485 * Enables showing of database errors. 1498 1486 * 1499 * This function should be used only to enable showing of errors. 1500 * wpdb::hide_errors() should be used instead for hiding of errors. However, 1501 * this function can be used to enable and disable showing of database 1502 * errors. 1487 * This function should be used only to enable showing of errors. wpdb::hide_errors() should be used instead for 1488 * hiding of errors. However, this function can be used to enable and disable showing of database errors. 1503 1489 * 1504 * @since 0.711505 1490 * @see wpdb::hide_errors() 1506 1491 * 1507 * @param bool $show Whether to show or hide errors 1508 * @return bool Old value for showing errors. 1492 * @since 0.71 1493 * 1494 * @param bool $show Whether to show or hide errors. 1495 * @return bool Whether showing of errors was previously active. 1509 1496 */ 1510 1497 public function show_errors( $show = true ) { 1511 1498 $errors = $this->show_errors; … … 1521 1508 * @since 0.71 1522 1509 * @see wpdb::show_errors() 1523 1510 * 1524 * @return bool Whether showing of errors was active1511 * @return bool Whether showing of errors was previously active. 1525 1512 */ 1526 1513 public function hide_errors() { 1527 1514 $show = $this->show_errors; … … 1532 1519 /** 1533 1520 * Whether to suppress database errors. 1534 1521 * 1535 * By default database errors are suppressed, with a simple 1536 * call to this function they can be enabled. 1522 * By default database errors are suppressed, with a simple call to this function they can be enabled. 1537 1523 * 1538 1524 * @since 2.5.0 1539 1525 * @see wpdb::hide_errors() 1526 * 1540 1527 * @param bool $suppress Optional. New value. Defaults to true. 1541 1528 * @return bool Old value 1542 1529 */ … … 1580 1567 /** 1581 1568 * Connect to and select database. 1582 1569 * 1583 * If $allow_bail is false, the lack of database connection will need 1584 * to be handled manually. 1570 * If $allow_bail is false, the lack of database connection will need to be handled manually. 1585 1571 * 1586 1572 * @since 3.0.0 1587 1573 * @since 3.9.0 $allow_bail parameter added. 1588 1574 * 1589 1575 * @param bool $allow_bail Optional. Allows the function to bail. Default true. 1590 * @return bool True with a successful connection, false on failure.1576 * @return bool True with a successful connection, false on failure. 1591 1577 */ 1592 1578 public function db_connect( $allow_bail = true ) { 1593 1579 $this->is_mysql = true; … … 1717 1703 /** 1718 1704 * Parse the DB_HOST setting to interpret it for mysqli_real_connect. 1719 1705 * 1720 * mysqli_real_connect doesn't support the host param including a port or 1721 * socket like mysql_connect does. This duplicates how mysql_connect detects 1722 * a port and/or socket file. 1706 * mysqli_real_connect doesn't support the host param including a port or socket like mysql_connect does. This 1707 * duplicates how mysql_connect detects a port and/or socket file. 1723 1708 * 1724 1709 * @since 4.9.0 1725 1710 * … … 1735 1720 1736 1721 // First peel off the socket parameter from the right, if it exists. 1737 1722 $socket_pos = strpos( $host, ':/' ); 1738 if ( false !== $socket_pos) {1723 if ( $socket_pos !== false ) { 1739 1724 $socket = substr( $host, $socket_pos + 1 ); 1740 1725 $host = substr( $host, 0, $socket_pos ); 1741 1726 } … … 1771 1756 /** 1772 1757 * Checks that the connection to the database is still up. If not, try to reconnect. 1773 1758 * 1774 * If this function is unable to reconnect, it will forcibly die, or if after the 1775 * the {@see 'template_redirect'} hookhas been fired, return false instead.1759 * If this function is unable to reconnect, it will forcibly die, or if after the {@see 'template_redirect'} hook 1760 * has been fired, return false instead. 1776 1761 * 1777 * If $allow_bail is false, the lack of database connection will need 1778 * to be handled manually. 1762 * If $allow_bail is false, the lack of database connection will need to be handled manually. 1779 1763 * 1780 1764 * @since 3.9.0 1781 1765 * … … 1802 1786 } 1803 1787 1804 1788 for ( $tries = 1; $tries <= $this->reconnect_retries; $tries++ ) { 1805 // On the last try, re-enable warnings. We want to see a single instance 1806 // of the"unable to connect" message on the bail() screen, if it appears.1789 // On the last try, re-enable warnings. We want to see a single instance of the 1790 // "unable to connect" message on the bail() screen, if it appears. 1807 1791 if ( $this->reconnect_retries === $tries && WP_DEBUG ) { 1808 1792 error_reporting( $error_reporting ); 1809 1793 } … … 1853 1837 // We weren't able to reconnect, so we better bail. 1854 1838 $this->bail( $message, 'db_connect_fail' ); 1855 1839 1856 // Call dead_db() if bail didn't die, because this database is no more. 1857 // It has ceased to be (at least temporarily). 1840 // Call dead_db() if bail didn't die, because this database is no more. It has ceased to be (at least temporarily). 1858 1841 dead_db(); 1859 1842 } 1860 1843 … … 1866 1849 * @since 0.71 1867 1850 * 1868 1851 * @param string $query Database query 1869 * @return int|bool Boolean true for CREATE, ALTER, TRUNCATE and DROP queries. Number of rows1870 * affected/selected for all other queries. Boolean false on error.1852 * @return int|bool Boolean true for CREATE, ALTER, TRUNCATE and DROP queries. Number of rows 1853 * affected/selected for all other queries. Boolean false on error. 1871 1854 */ 1872 1855 public function query( $query ) { 1873 1856 if ( ! $this->ready ) { … … 1997 1980 } 1998 1981 } 1999 1982 2000 // Log number of rows the query returned 2001 // and return number of rows selected. 1983 // Log number of rows the query returned and return number of rows selected. 2002 1984 $this->num_rows = $num_rows; 2003 1985 $return_val = $num_rows; 2004 1986 } … … 2113 2095 * @since 4.8.3 2114 2096 * 2115 2097 * @param string $query The query to escape. 2116 * @return string The query with the placeholder escape string inserted where necessary.2098 * @return string The query with the placeholder escape string inserted where necessary. 2117 2099 */ 2118 2100 public function add_placeholder_escape( $query ) { 2119 2101 /* … … 2129 2111 * @since 4.8.3 2130 2112 * 2131 2113 * @param string $query The query from which the placeholder will be removed. 2132 * @return string The query with the placeholder removed.2114 * @return string The query with the placeholder removed. 2133 2115 */ 2134 2116 public function remove_placeholder_escape( $query ) { 2135 2117 return str_replace( $this->placeholder_escape(), '%', $query ); … … 2138 2120 /** 2139 2121 * Insert a row into a table. 2140 2122 * 2123 * Examples: 2141 2124 * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 'bar' ) ) 2142 2125 * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) ) 2143 2126 * … … 2146 2129 * @see wpdb::$field_types 2147 2130 * @see wp_set_wpdb_vars() 2148 2131 * 2149 * @param string $table Table name 2132 * @param string $table Table name. 2150 2133 * @param array $data Data to insert (in column => value pairs). 2151 2134 * Both $data columns and $data values should be "raw" (neither should be SQL escaped). 2152 * Sending a null value will cause the column to be set to NULL - the corresponding format is ignored in this case. 2135 * Sending a null value will cause the column to be set to NULL - the corresponding 2136 * format is ignored in this case. 2153 2137 * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. 2154 2138 * If string, that format will be used for all of the values in $data. 2155 2139 * A format is one of '%d', '%f', '%s' (integer, float, string). 2156 * If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 2157 * @return int|false The number of rows inserted, or false on error. 2140 * If omitted, all values in $data will be treated as strings unless otherwise 2141 * specified in wpdb::$field_types. 2142 * @return int|false The number of rows inserted, or false on error. 2158 2143 */ 2159 2144 public function insert( $table, $data, $format = null ) { 2160 2145 return $this->_insert_replace_helper( $table, $data, $format, 'INSERT' ); … … 2163 2148 /** 2164 2149 * Replace a row into a table. 2165 2150 * 2151 * Examples: 2166 2152 * wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 'bar' ) ) 2167 2153 * wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) ) 2168 2154 * … … 2171 2157 * @see wpdb::$field_types 2172 2158 * @see wp_set_wpdb_vars() 2173 2159 * 2174 * @param string $table Table name 2160 * @param string $table Table name. 2175 2161 * @param array $data Data to insert (in column => value pairs). 2176 2162 * Both $data columns and $data values should be "raw" (neither should be SQL escaped). 2177 * Sending a null value will cause the column to be set to NULL - the corresponding format is ignored in this case. 2163 * Sending a null value will cause the column to be set to NULL - the corresponding 2164 * format is ignored in this case. 2178 2165 * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. 2179 2166 * If string, that format will be used for all of the values in $data. 2180 2167 * A format is one of '%d', '%f', '%s' (integer, float, string). 2181 * If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 2182 * @return int|false The number of rows affected, or false on error. 2168 * If omitted, all values in $data will be treated as strings unless otherwise 2169 * specified in wpdb::$field_types. 2170 * @return int|false The number of rows affected, or false on error. 2183 2171 */ 2184 2172 public function replace( $table, $data, $format = null ) { 2185 2173 return $this->_insert_replace_helper( $table, $data, $format, 'REPLACE' ); … … 2198 2186 * @param string $table Table name 2199 2187 * @param array $data Data to insert (in column => value pairs). 2200 2188 * Both $data columns and $data values should be "raw" (neither should be SQL escaped). 2201 * Sending a null value will cause the column to be set to NULL - the corresponding format is ignored in this case. 2189 * Sending a null value will cause the column to be set to NULL - the corresponding 2190 * format is ignored in this case. 2202 2191 * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data. 2203 2192 * If string, that format will be used for all of the values in $data. 2204 2193 * A format is one of '%d', '%f', '%s' (integer, float, string). 2205 * If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 2194 * If omitted, all values in $data will be treated as strings unless otherwise 2195 * specified in wpdb::$field_types. 2206 2196 * @param string $type Optional. What type of operation is this? INSERT or REPLACE. Defaults to INSERT. 2207 2197 * @return int|false The number of rows affected, or false on error. 2208 2198 */ … … 2240 2230 } 2241 2231 2242 2232 /** 2243 * Update a row in the table 2233 * Update a row in the table. 2244 2234 * 2235 * Examples: 2245 2236 * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 'bar' ), array( 'ID' => 1 ) ) 2246 2237 * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( 'ID' => 1 ), array( '%s', '%d' ), array( '%d' ) ) 2247 2238 * … … 2258 2249 * @param array $where A named array of WHERE clauses (in column => value pairs). 2259 2250 * Multiple clauses will be joined with ANDs. 2260 2251 * Both $where columns and $where values should be "raw". 2261 * Sending a null value will create an IS NULL comparison - the corresponding format will be ignored in this case. 2252 * Sending a null value will create an IS NULL comparison - the corresponding 2253 * format will be ignored in this case. 2262 2254 * @param array|string $format Optional. An array of formats to be mapped to each of the values in $data. 2263 2255 * If string, that format will be used for all of the values in $data. 2264 2256 * A format is one of '%d', '%f', '%s' (integer, float, string). 2265 * If omitted, all values in $data will be treated as strings unless otherwise specified in wpdb::$field_types. 2257 * If omitted, all values in $data will be treated as strings unless otherwise 2258 * specified in wpdb::$field_types. 2266 2259 * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where. 2267 2260 * If string, that format will be used for all of the items in $where. 2268 2261 * A format is one of '%d', '%f', '%s' (integer, float, string). 2269 2262 * If omitted, all values in $where will be treated as strings. 2270 * @return int|false The number of rows updated, or false on error.2263 * @return int|false The number of rows updated, or false on error. 2271 2264 */ 2272 2265 public function update( $table, $data, $where, $format = null, $where_format = null ) { 2273 2266 if ( ! is_array( $data ) || ! is_array( $where ) ) { … … 2329 2322 * @param array $where A named array of WHERE clauses (in column => value pairs). 2330 2323 * Multiple clauses will be joined with ANDs. 2331 2324 * Both $where columns and $where values should be "raw". 2332 * Sending a null value will create an IS NULL comparison - the corresponding format will be ignored in this case. 2325 * Sending a null value will create an IS NULL comparison - the corresponding 2326 * format will be ignored in this case. 2333 2327 * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where. 2334 2328 * If string, that format will be used for all of the items in $where. 2335 2329 * A format is one of '%d', '%f', '%s' (integer, float, string). 2336 * If omitted, all values in $where will be treated as strings unless otherwise specified in wpdb::$field_types. 2337 * @return int|false The number of rows updated, or false on error. 2330 * If omitted, all values in $data will be treated as strings unless otherwise 2331 * specified in wpdb::$field_types. 2332 * @return int|false The number of rows updated, or false on error. 2338 2333 */ 2339 2334 public function delete( $table, $where, $where_format = null ) { 2340 2335 if ( ! is_array( $where ) ) { … … 2369 2364 /** 2370 2365 * Processes arrays of field/value pairs and field formats. 2371 2366 * 2372 * This is a helper method for wpdb's CRUD methods, which take field/value 2373 * pairs for inserts, updates, and where clauses. This method first pairs 2374 * each value with a format. Then it determines the charset of that field, 2375 * using that to determine if any invalid text would be stripped. If text is 2376 * stripped, then field processing is rejected and the query fails. 2367 * This is a helper method for wpdb's CRUD methods, which take field/value pairs for inserts, updates, and where 2368 * clauses. This method first pairs each value with a format. Then it determines the charset of that field, using 2369 * that to determine if any invalid text would be stripped. If text is stripped, then field processing is rejected 2370 * and the query fails. 2377 2371 * 2378 2372 * @since 4.2.0 2379 2373 * … … 2380 2374 * @param string $table Table name. 2381 2375 * @param array $data Field/value pair. 2382 2376 * @param mixed $format Format for each field. 2383 * @return array|false Returns an array of fields that contain paired values 2384 * and formats. Returns false for invalid values. 2377 * 2378 * @return array|false Returns an array of fields that contain paired value and formats. Returns false for 2379 * invalid values. 2385 2380 */ 2386 2381 protected function process_fields( $table, $data, $format ) { 2387 2382 $data = $this->process_field_formats( $data, $format ); … … 2415 2410 * 2416 2411 * @param array $data Array of fields to values. 2417 2412 * @param mixed $format Formats to be mapped to the values in $data. 2418 * @return array Array, keyed by field names with values being an array 2419 * of 'value' and 'format' keys. 2413 * @return array Array, keyed by field names with values being an array of 'value' and 'format' keys. 2420 2414 */ 2421 2415 protected function process_field_formats( $data, $format ) { 2422 2416 $formats = (array) $format; … … 2444 2438 } 2445 2439 2446 2440 /** 2447 * Adds field charsets to field/value/format arrays generated by 2448 * the wpdb::process_field_formats() method. 2441 * Adds field charsets to field/value/format arrays generated by the wpdb::process_field_formats() method. 2449 2442 * 2450 2443 * @since 4.2.0 2451 2444 * 2452 2445 * @param array $data As it comes from the wpdb::process_field_formats() method. 2453 2446 * @param string $table Table name. 2454 * @return array|false The same array as $data with additional 'charset' keys.2447 * @return array|false The same array as $data with additional 'charset' keys. 2455 2448 */ 2456 2449 protected function process_field_charsets( $data, $table ) { 2457 2450 foreach ( $data as $field => $value ) { … … 2481 2474 * 2482 2475 * @param array $data As it comes from the wpdb::process_field_charsets() method. 2483 2476 * @param string $table Table name. 2484 * @return array|false The same array as $data with additional 'length' keys, or false if2485 * any of the values were too long for their corresponding field.2477 * @return array|false The same array as $data with additional 'length' keys, or false if 2478 * any of the values were too long for their corresponding field. 2486 2479 */ 2487 2480 protected function process_field_lengths( $data, $table ) { 2488 2481 foreach ( $data as $field => $value ) { … … 2508 2501 /** 2509 2502 * Retrieve one variable from the database. 2510 2503 * 2511 * Executes a SQL query and returns the value from the SQL result. 2512 * If the SQL result contains more than one column and/or more than one row, this function returns the value in the column and row specified.2513 * If $query is null, this function returns the value in the specified column and row from the previous SQL result.2504 * Executes a SQL query and returns the value from the SQL result. If the SQL result contains more than one column 2505 * and/or more than one row, the value in the column and row specified is returned. If $query is null, the value 2506 * in the specified column and row from the previous SQL result is returned. 2514 2507 * 2515 2508 * @since 0.71 2516 2509 * … … 2517 2510 * @param string|null $query Optional. SQL query. Defaults to null, use the result from the previous query. 2518 2511 * @param int $x Optional. Column of value to return. Indexed from 0. 2519 2512 * @param int $y Optional. Row of value to return. Indexed from 0. 2520 * @return string|null Database query result (as string), or null on failure2513 * @return string|null Database query result (as string), or null on failure 2521 2514 */ 2522 2515 public function get_var( $query = null, $x = 0, $y = 0 ) { 2523 2516 $this->func_call = "\$db->get_var(\"$query\", $x, $y)"; … … 2546 2539 * 2547 2540 * @since 0.71 2548 2541 * 2549 * @param string|null $query SQL query. 2550 * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to 2551 * an stdClass object, an associative array, or a numeric array, respectively. Default OBJECT. 2552 * @param int $y Optional. Row to return. Indexed from 0. 2542 * @param string|null $query SQL query. 2543 * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which 2544 * correspond to a stdClass object, an associative array, or a numeric array, 2545 * respectively. Default OBJECT. 2546 * @param int $y Optional. Row to return. Indexed from 0. 2553 2547 * @return array|object|null|void Database query result in format specified by $output or null on failure 2554 2548 */ 2555 2549 public function get_row( $query = null, $output = OBJECT, $y = 0 ) { … … 2586 2580 /** 2587 2581 * Retrieve one column from the database. 2588 2582 * 2589 * Executes a SQL query and returns the column from the SQL result. 2590 * If the SQL result contains more than one column, this function returns the column specified.2591 * If $query is null, this function returns the specified column fromthe previous SQL result.2583 * Executes a SQL query and returns the column from the SQL result. If the SQL result contains more than one column, 2584 * this function returns the column specified. If $query is null, this function returns the specified column from 2585 * the previous SQL result. 2592 2586 * 2593 2587 * @since 0.71 2594 2588 * 2595 2589 * @param string|null $query Optional. SQL query. Defaults to previous query. 2596 2590 * @param int $x Optional. Column to return. Indexed from 0. 2597 * @return array Database query result. Array indexed from 0 by SQL result row number.2591 * @return array Database query result. Array indexed from 0 by SQL result row number. 2598 2592 */ 2599 2593 public function get_col( $query = null, $x = 0 ) { 2600 2594 if ( $this->check_current_query && $this->check_safe_collation( $query ) ) { … … 2622 2616 * 2623 2617 * @since 0.71 2624 2618 * 2625 * @param string $query SQL query. 2626 * @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. 2627 * With one of the first three, return an array of rows indexed from 0 by SQL result row number. 2628 * Each row is an associative array (column => value, ...), a numerically indexed array (0 => value, ...), or an object. ( ->column = value ), respectively. 2629 * With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value. 2630 * Duplicate keys are discarded. 2631 * @return array|object|null Database query results 2619 * @param string $query SQL query. 2620 * @param string $output Optional. Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. 2621 * With one of the first three, return an array of rows indexed from 0 by SQL result row 2622 * number. Each row is an associative array (column => value, ...), a numerically indexed 2623 * array (0 => value, ...), or an object. ( ->column = value ), respectively. With 2624 * OBJECT_K, return an associative array of row objects keyed by the value of each row's 2625 * first column's value. Duplicate keys are discarded. 2626 * @return array|object|null Database query results. 2627 * 2632 2628 */ 2633 2629 public function get_results( $query = null, $output = OBJECT ) { 2634 2630 $this->func_call = "\$db->get_results(\"$query\", $output)"; … … 2686 2682 * 2687 2683 * @since 4.2.0 2688 2684 * 2689 * @param string $table Table name.2685 * @param string $table Table name. 2690 2686 * @return string|WP_Error Table character set, WP_Error object if it couldn't be found. 2691 2687 */ 2692 2688 protected function get_table_charset( $table ) { … … 2787 2783 * 2788 2784 * @since 4.2.0 2789 2785 * 2790 * @param string $table Table name.2791 * @param string $column Column name.2792 * @return string|false|WP_Error Column character set as a string. False if the column has no 2793 * character set.WP_Error object if there was an error.2786 * @param string $table Table name. 2787 * @param string $column Column name. 2788 * @return string|false|WP_Error Column character set as a string. False if the column has no character set. 2789 * WP_Error object if there was an error. 2794 2790 */ 2795 2791 public function get_col_charset( $table, $column ) { 2796 2792 $tablekey = strtolower( $table ); … … 2847 2843 2848 2844 /** 2849 2845 * Retrieve the maximum string length allowed in a given column. 2846 * 2850 2847 * The length may either be specified as a byte length or a character length. 2851 2848 * 2852 2849 * @since 4.2.1 2853 2850 * 2854 * @param string $table Table name.2855 * @param string $column Column name.2851 * @param string $table Table name. 2852 * @param string $column Column name. 2856 2853 * @return array|false|WP_Error array( 'length' => (int), 'type' => 'byte' | 'char' ) 2857 2854 * false if the column has no length (for example, numeric column) 2858 2855 * WP_Error object if there was an error. … … 2938 2935 /** 2939 2936 * Check if a string is ASCII. 2940 2937 * 2941 * The negative regex is faster for non-ASCII strings, as it allows 2942 * the search to finish as soon as it encountersa non-ASCII character.2938 * The negative regex is faster for non-ASCII strings, as it allows the search to finish as soon as it encounters 2939 * a non-ASCII character. 2943 2940 * 2944 2941 * @since 4.2.0 2945 2942 * 2946 2943 * @param string $string String to check. 2947 * @return bool True if ASCII, false if not.2944 * @return bool True if ASCII, false if not. 2948 2945 */ 2949 2946 protected function check_ascii( $string ) { 2950 2947 if ( function_exists( 'mb_check_encoding' ) ) { … … 2964 2961 * @since 4.2.0 2965 2962 * 2966 2963 * @param string $query The query to check. 2967 * @return bool True if the collation is safe, false if it isn't.2964 * @return bool True if the collation is safe, false if it isn't. 2968 2965 */ 2969 2966 protected function check_safe_collation( $query ) { 2970 2967 if ( $this->checking_collation ) { … … 3020 3017 * 3021 3018 * @since 4.2.0 3022 3019 * 3023 * @param array $data Array of value arrays. Each value array has the keys 3024 * 'value' and 'charset'. An optional 'ascii' key can be 3025 * set to false to avoid redundant ASCII checks. 3026 * @return array|WP_Error The $data parameter, with invalid characters removed from 3027 * each value. This works as a passthrough: any additional keys 3028 * such as 'field' are retained in each value array. If we cannot 3029 * remove invalid characters, a WP_Error object is returned. 3020 * @param array $data Array of value arrays. Each value array has the keys 'value' and 'charset'. An optional 3021 * 'ascii' key can be set to false to avoid redundant ASCII checks. 3022 * @return array|WP_Error The $data parameter, with invalid characters removed from each value. This works as a 3023 * passthrough: any additional keys such as 'field' are retained in each value array. If we 3024 * cannot remove invalid characters, a WP_Error object is returned. 3030 3025 */ 3031 3026 protected function strip_invalid_text( $data ) { 3032 3027 $db_check_string = false; … … 3039 3034 $truncate_by_byte_length = 'byte' === $value['length']['type']; 3040 3035 } else { 3041 3036 $length = false; 3042 /* 3043 * Since we have no length, we'll never truncate. 3044 * Initialize the variable to false. true would take us 3045 * through an unnecessary (for this case) codepath below. 3046 */ 3037 // Since we have no length, we'll never truncate. Initialize the variable to false. true would take us 3038 // through an unnecessary (for this case) codepath below. 3047 3039 $truncate_by_byte_length = false; 3048 3040 } 3049 3041 … … 3059 3051 3060 3052 $needs_validation = true; 3061 3053 if ( 3062 // latin1 can store any byte sequence 3054 // latin1 can store any byte sequence. 3063 3055 'latin1' === $charset 3064 3056 || 3065 3057 // ASCII is always OK. … … 3182 3174 * 3183 3175 * @since 4.2.0 3184 3176 * 3185 * @param string $query Query to convert.3177 * @param string $query Query to convert. 3186 3178 * @return string|WP_Error The converted query, or a WP_Error object if the conversion fails. 3187 3179 */ 3188 3180 protected function strip_invalid_text_from_query( $query ) { … … 3227 3219 * 3228 3220 * @since 4.2.0 3229 3221 * 3230 * @param string $table Table name.3231 * @param string $column Column name.3232 * @param string $value The text to check.3222 * @param string $table Table name. 3223 * @param string $column Column name. 3224 * @param string $value The text to check. 3233 3225 * @return string|WP_Error The converted string, or a WP_Error object if the conversion fails. 3234 3226 */ 3235 3227 public function strip_invalid_text_for_column( $table, $column, $value ) { … … 3302 3294 3303 3295 /* 3304 3296 * SHOW TABLE STATUS LIKE and SHOW TABLES LIKE 'wp\_123\_%' 3305 * This quoted LIKE operand seldom holds a full table name. 3306 * It is usually a pattern for matching a prefix so we just 3307 * strip the trailing % and unescape the _ to get 'wp_123_' 3308 * which drop-ins can use for routing these SQL statements. 3297 * This quoted LIKE operand seldom holds a full table name. It is usually a 3298 * pattern for matching a prefix so we just strip the trailing % and unescape 3299 * the _ to get 'wp_123_' which drop-ins can use for routing these SQL statements. 3309 3300 */ 3310 3301 if ( preg_match( '/^\s*SHOW\s+(?:TABLE\s+STATUS|(?:FULL\s+)?TABLES)\s+(?:WHERE\s+Name\s+)?LIKE\s*("|\')((?:[\\\\0-9a-zA-Z$_.-]|[\xC2-\xDF][\x80-\xBF])+)%?\\1/is', $query, $maybe ) ) { 3311 3302 return str_replace( '\\_', '_', $maybe[2] ); … … 3365 3356 * 3366 3357 * @since 0.71 3367 3358 * 3368 * @param string $info_type Optional. Type one of name, table, def, max_length, not_null, primary_key, multiple_key, unique_key, numeric, blob, type, unsigned, zerofill 3369 * @param int $col_offset Optional. 0: col name. 1: which table the col's in. 2: col's max length. 3: if the col is numeric. 4: col's type 3359 * @param string $info_type Optional. Type one of name, table, def, max_length, not_null, primary_key, 3360 * multiple_key, unique_key, numeric, blob, type, unsigned, zerofill 3361 * @param int $col_offset Optional. 0: col name. 1: which table the col's in. 2: col's max length. 3362 * 3: if the col is numeric. 4: col's type 3370 3363 * @return mixed Column Results 3371 3364 */ 3372 3365 public function get_col_info( $info_type = 'name', $col_offset = -1 ) { … … 3417 3410 * 3418 3411 * @since 1.5.0 3419 3412 * 3420 * @param string $message The error message.3421 * @param string $error_code Optional. A computer-readable string to identify the error.3422 * @return void|false Void if the showing of errors is enabled, false if disabled.3413 * @param string $message The Error message 3414 * @param string $error_code Optional. A Computer readable string to identify the error. 3415 * @return false|void 3423 3416 */ 3424 3417 public function bail( $message, $error_code = '500' ) { 3425 3418 if ( $this->show_errors ) { … … 3461 3454 * 3462 3455 * @since 4.5.0 3463 3456 * 3464 * @return bool True if the connection was successfully closed, false if it wasn't, 3465 * or the connection doesn't exist. 3457 * @return bool True if the connection was successfully closed, false if it wasn't, or if the connection doesn't exist. 3466 3458 */ 3467 3459 public function close() { 3468 3460 if ( ! $this->dbh ) { … … 3489 3481 * 3490 3482 * @since 2.5.0 3491 3483 * 3492 * @global string $wp_version The WordPress version string. 3493 * @global string $required_mysql_version The required MySQL version string. 3494 * 3495 * @return void|WP_Error 3484 * @global string $wp_version 3485 * @global string $required_mysql_version 3486 * @return WP_Error|void 3496 3487 */ 3497 3488 public function check_database_version() { 3498 3489 global $wp_version, $required_mysql_version; … … 3549 3540 * 3550 3541 * @see wpdb::db_version() 3551 3542 * 3552 * @param string $db_cap The feature to check for. Accepts 'collation', 3553 * 'group_concat', 'subqueries', 'set_charset', 3543 * @param string $db_cap The feature to check for. Accepts 'collation', 'group_concat', 'subqueries', 'set_charset', 3554 3544 * 'utf8mb4', or 'utf8mb4_520'. 3555 * @return int|false Whether the database feature is supported, false otherwise.3545 * @return int|false Whether the database feature is supported, false otherwise. 3556 3546 */ 3557 3547 public function has_cap( $db_cap ) { 3558 3548 $version = $this->db_version(); … … 3594 3584 /** 3595 3585 * Retrieve the name of the function that called wpdb. 3596 3586 * 3597 * Searches up the list of functions until it reaches 3598 * the one that would most logically had called this method. 3587 * Searches up the list of functions until it reaches the one that would most logically had called this method. 3599 3588 * 3600 3589 * @since 2.5.0 3601 3590 *