Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wypisz za pomocą PHP wartość zmiennej lub predefiniowaną STAŁY z ciągu wynikowego MySQL

Może jeśli zapiszesz ciągi DB w sprint_f format, nie widzę innego sposobu:

$color = 'blue';
define('GRASS_COLOR', 'green');

$text = 'The sky is %s and the grass is %s';
$text = sprintf( $text, $color , GRASS_COLOR );

echo $text;

AKTUALIZACJA

Najwyraźniej byłem trochę zbyt pospieszny z konstatacją „nie widzę innej drogi „. Właściwie jest to zdecydowanie osiągalne przy użyciu get_defined_vars() i get_defined_constants() Funkcje. Pomysł polega na zebraniu wszystkich zmiennych i stałych zdefiniowanych przez użytkownika, a następnie zastąpieniu ich w ciągu. Może to być nawet prosty mechanizm szablonów (jeśli jeszcze nie istnieje).

// place here value from database
$text = 'The sky is $color and</br> the grass is GRASS_COLOR';

$color = 'blue';
define('GRASS_COLOR', 'green');

// collect all defined variables and filter them to get only variables of string and numeric type
$values = array_filter( get_defined_vars(), function( $item ) {
    return is_string($item) || is_numeric($item);
});

// append the dollar sign to keys
$keys = array_map( function( $item ) { 
    return '$'.$item;
}, array_keys( $values ) );

// create the final array by comining the arrays $keys and $values
$vars = array_combine( $keys, array_values( $values ) );

// relpace names of the variables with values
$text = str_replace( array_keys( $vars ), array_values( $vars ), $text );

// collect all constants and replace user defined constants with values
$constants = get_defined_constants( true );
$text = str_replace( array_keys( $constants['user'] ), array_values( $constants['user'] ), $text );

// we are done
echo $text;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sekcje pliku konfiguracyjnego Mysql

  2. Czy obiekt TransactionScope jest w pełni obsługiwany przy użyciu MySqlConnector for .NET?

  3. Zainstaluj Innotop, aby monitorować wydajność serwera MySQL

  4. Naruszenie ograniczenia integralności:1052 Kolumna „id”, w której klauzula jest niejednoznaczna

  5. Jak porównać dwie kolumny, aby znaleźć niedopasowane rekordy w MySQL?