PHP:替换"变量"来自mysql查询(表的内容)

时间:2012-02-07 23:06:04

标签: php mysql sql variables

我试图从mysql查询中回显一个变量,如下所示:

<?php
...//FYI: mysql connection already established
//Table: title 
//col: page | title
//row: html | "$domain_name: Welcome"

$page_id = basename(getcwd());
$domain_name = "Name of My Domain";

$sql = "SELECT title FROM mydatabase.title WHERE page = '$page_id' ";
//The query's result is 1 row
$dbq = mysql_query ($sql);
$dba = mysql_fetch_array( $dbq );
echo $dba["title"];
//it outputs: $domain_name: Welcome", instead of "Name of My Domain: Welcome"
?>

我做错了什么? 我试图用它的php值替换表格内容中的“变量[$ domain_name]。我认为”(双引号)应该用它的值替换变量。

PS。我是初学者

编辑2012年2月7日,下午3:14:忘了提。 查询正常。 $ dba ['title']将“$ domain_name:Welcome”作为值。问题是,它没有替换$ domain_name

2 个答案:

答案 0 :(得分:3)

  

我认为“(双引号)应该用它的值替换变量。

仅当您在代码中指定字符串时才有效。如果字符串来自外部 - 它没有这种神奇的行为。

所以唯一可以解决的解决方案是:

echo str_replace('$domain_name', $domain_name, $dba["title"]);

或者您可以选择某种模板引擎,如Twig或Smarty,并将您的数据库值视为模板,将变量视为数据。

答案 1 :(得分:1)

您可以在数据库级别替换它:

$sql = 'SELECT REPLACE(title, \'$domain_name\',\''.$domain_name.'\') as title FROM mydatabase.title WHERE page = '.intval($page_id);
//The query's result is 1 row
$dbq = mysql_query ($sql);
$dba = mysql_fetch_array( $dbq );
echo $dba["title"];

(注意单引号)