2012-01-19 20 views
6

Moje tabele bazy danych 1 wiersz wygląda takJak uzyskać wartość określona przez zmienną

enter image description here

mam przechowywania wszystkich zmiennych, które używane w organizmie, w innej kolumnie o nazwie vars. Potem ściągam wszystkie vary. Jeśli są wielokrotne, eksploduje za pomocą symbolu ",".

Chcę tylko pobrać wszystkie używane partycje z db, a następnie przefiltrować je drugą funkcją filter. Jak widać, filtr ma 3 wejścia: $content, $needle, $replacement.

$ content - wiadomości ciała,

$ igła - % .Co szukamy. %

$ zamiennik - jest var, który otrzymaliśmy z bazy danych, zdefiniowanej przez php. Na przykład, jeśli otrzymam wsurl z bazy danych, to jest już zdefiniowane w moim settings.php jak DEFINE ("wsurl", "www.twojadomena.com").

Pytanie brzmi, jak wysłać zdefiniowaną wartość jako trzecie wejście - $replacement?

public function genMsg($id) { 
    $msgid = $id; 
    $stmt = $db->prepare('SELECT `body`, `status`, `vars` FROM `messages` WHERE `id`=?') or die(htmlspecialchars($this->db->error)); 
    $stmt->bind_param("i", $msgid) or die(htmlspecialchars($stmt->error)); 
    $stmt->execute() or die(htmlspecialchars($stmt->error)); 
    $stmt->bind_result($message, $status, $vars) or die($stmt->error); 
    $stmt->fetch() or die($stmt->error); 
    $stmt->close(); 
    $image = ($status == -1) ? "fail" : "success"; 
    if (isset($vars) && !empty($vars)) { 
     if (strpos($vars, ",")) { 
      $vars = explode(",", $vars); 
      foreach ($vars as $key => $var) { 
       $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>); 
      } 
     } else { 
      $var = trim($vars); 
      $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>); 
     } 
    } 
    $data = array(
     'status' => $status, 
     'message' => $message 
    ); 
} 

protected function filter($content, $needle, $replacement) { 
    return str_replace("%'.$needle.'%", $replacement, $content); 
} 
+0

Proszę zaktualizować swoje pytanie zamiast pisać praktycznie identyczny jeden. Głosowanie w celu zamknięcia tego jako duplikatu [problemu funkcji str_replace] (http://stackoverflow.com/questions/8921462/str-replace-function-issue), ponieważ nowy jest lepszy. – deceze

Odpowiedz

Powiązane problemy