2015-02-01 3 views
1

PHP에서 동적 문자열로 작업하고 있습니다.PHP는 SQL 결과에서 변수를 읽습니다.

헤이 Deben Oldert Deben 및 Oldert 두 변수는

: 이 같은 문자열을 만들어야합니다.

$firstname = "Deben"; 
$lastname = "Oldert"; 

$body = mysqli_fetch_assoc(mysqli_query($conn, "SELECT body FROM mail WHERE type='{$_GET['type']}'"))['body'].PHP_EOL; 

//The body field contains <p>Hey $firstname $lastname</p> 

echo $body 

내가 그것은 왜 그것이 mysqli_fetch 결과에서 작동하지 않는 Hey Deben Oldert

를 출력

$a = 'Deben'; 
$b = 'Oldert'; 
$b = "Hey $a $b".PHP_EOL; 
echo $b; 

했을 때 Hey $firstname $lastname
출력?

+1

DB 테이블에 저장된 변수가 들어있는 문자열은 자동으로 현재 범위의 변수를 보간하지 않습니다. 그 문자열은 _ 그냥 문자열입니다. PHP 코드가 아닙니다. –

+1

사이드 노트 - 페치 콜 안에 mysqli_query()를 중첩하는 것은 좋지 않습니다. 실패했을 경우 ('$ _GET'의 직접 필터되지 않은 입력을 쉽게받을 수 있음) 전체 프로그램이 중단됩니다. –

+0

문자열을'

Hey % s % s

'http://php.net/manual/en/function.sprintf.php와 같은'sprintf()'형식으로 저장하는 것을 고려해보십시오. –

답변

0

PHP는 큰 따옴표 붙은 문자열을 구문 분석하고 변수 값으로 대체합니다. 그러나 변수의 내용을 구문 분석하지는 않습니다.

따라서 "Hey $a $b"을 인쇄하면 $a$b이 값으로 바뀝니다. 그러나 echo $ b를하면 $ b에있는 내용이 인쇄됩니다. 먼저 구문 분석하지 않습니다. 마찬가지로, 'Hey $a $b'을 만든 경우 해당 구문을 분석하지 않습니다.

일반적으로 데이터베이스에서 패턴을 가져 오는 경우 자신의 대체 작업을 수행합니다. printf().

관련 문제