2014-02-27 71 views
0

當我執行mysql select語句時,echo'ing $ result時會得到下面的結果;取得結果Mysql分配PHP變量

echo $row['comment2']; 

給了我這樣的:

$fullname = ddasdfd; 
$bacc = 324234234; 
$brouting = 23423434; 
$btype = checking; 
$btype2 = personal; 
$bankname = 234234234; 

如何使用這個結果,我得到了時選擇的文本字段我的MySQL表內並指定爲PHP變量,所以我可以做的:

echo $fullname; 

任何形式的幫助,我可以得到這是非常感謝!

當前代碼:

$query = "select * FROM `store`.`oc_order` WHERE `order_status_id`='10' AND `achgroup`='' ORDER BY `date_added` LIMIT 10"; 
    $result = mysql_query($query,$db) or die(mysql_error()); 
    while($row = mysql_fetch_array($result)) { 

    echo $row['comment2']; 

echo'ing ddasdfd時,我想:

+2

粘貼當前代碼 – cornelb

回答

2

雖然最明顯的方式將涉及eval() - 我強烈建議你避免這種情況。這完全不安全。

因此,你可以用正則表達式的一些東西,extract()成果解決您的情況:

$result='$fullname=ddasdfd; $bacc=324234234; $brouting=23423434; $btype=checking; $btype2=personal; $bankname=234234234;'; 
preg_match_all('/\$([a-zA-Z][a-zA-Z0-9]*)\s*\=\s*([^;]*);/ms', $result, $matches); 
$matches = array_combine($matches[1], $matches[2]); 
extract($matches); //now $fullname, $bacc and so on are in global scope 

注意,即:

  • 它將檢查語法。是的,這失敗,如果語法不正確
  • 它將檢查,如果變量具有有效的名稱
  • 它將檢查,如果值是「好」(這樣的分隔符是;

而事實上,它不應該這樣做(因爲正則表達式不是可能或應該用於這些問題的東西)。再多說一句,更正確的方法是,我會以某種方式看到初始數據的規範化,從而避免像這樣的事情 - 即處理解析/執行PHP代碼。

+0

反正是有,我們可以在結果中刪除任何奇怪的字符...我注意到,如果我有$全稱= dasdddf&adfsdfd - 那麼代碼充當了.... – thevoipman

+0

是什麼人物「奇」和哪裏? –

1

如果$ result變量中包含VAR_NAME一個字符串值=由\分隔的N,然後你可以這樣做:

$results = explode('\n', $results); 
foreach ($results as $result){ 
    eval($result); 
} 

echo $fullname; 

注意,雖然eval可能導致重要的安全問題。 不要評估不可信的數據。

0

由於沒有看到你的代碼,它應該是這個樣子:

$resultsArray = mysql_fetch_assoc($result); 
$fullname = $resultsArray['fullname']; 
$brouting = $resultsArray['brouting']; 
$btype = $resultsArray['btype']; 
$btype2 = $resultsArray['btype2']; 
$bankname = $resultsArray['bankname']; 

從這裏你應該能夠自由地呼應的變量。