PHP MYSQL-包含PHP变量的Echo MYSQL值?
当用作mysql表中的值的一部分时,我尝试获取要显示的变量PHP MYSQL-包含PHP变量的Echo MYSQL值?,php,mysql,variables,Php,Mysql,Variables,当用作mysql表中的值的一部分时,我尝试获取要显示的变量 $variable = 'cool'; MYSQL FIELD VALUE "This is '.$variable.' wow" 当我回显此值时,它显示为: This is '.$variable.' wow 我希望它显示为: This is cool wow 这里的诀窍是什么 @马克:对不起,我是新来的 $linkQuery3 = 'SELECT model FROM models WHERE model_id = "'.
$variable = 'cool';
MYSQL FIELD VALUE
"This is '.$variable.' wow"
当我回显此值时,它显示为:
This is '.$variable.' wow
我希望它显示为:
This is cool wow
这里的诀窍是什么
@马克:对不起,我是新来的
$linkQuery3 = 'SELECT model
FROM models
WHERE model_id = "'.$pageModel.'"
';
$sql15 = mysql_query($linkQuery3) or die(mysql_error());
if (mysql_num_rows($sql15) == 0) {
die('No results.');
} else {
while($row = mysql_fetch_assoc($sql15)) {
$model = stripslashes($row['model']);
}
}
$linkQuery2 = 'SELECT l.link , l.desc , l.domId , d.domain FROM links l INNER JOIN domains d ON d.domId = l.domId WHERE l.catId="'.$pageCat.'" && (l.modId="1" || l.modId="'.$pageModel.'") ORDER BY domain
';
$sql3 = mysql_query($linkQuery2) or die(mysql_error());
if (mysql_num_rows($sql3) == 0) {
die('No results.');
} else {
$pageContent .= '';
while($row = mysql_fetch_assoc($sql3)) {
$linkAd = ($row['link']);
$linkDesc = ($row['desc']);
$linkDomain = ($row['domain']);
$pageContent .= '
<li><a href="'.$linkAd.'" target="_tab">'.$linkDesc.' '.$linkDomain.'</a></li>
';
}
}
$linkQuery3='选择模型
来自模型
其中model_id=“”.$pageModel.”
';
$sql15=mysql\u query($linkQuery3)或die(mysql\u error());
if(mysql_num_rows($sql15)==0){
死亡(“没有结果”);
}否则{
while($row=mysql\u fetch\u assoc($sql15)){
$model=stripslashes($row['model']);
}
}
$linkQuery2='从链接中选择l.link、l.desc、l.domId、d.domain l内部连接域d在d.domId=l.domId上,其中l.catId=“”...pageCat.”“&&&(l.modId=“1”| | l.modId=“...pageModel.”按域排序
';
$sql3=mysql\u query($linkQuery2)或die(mysql\u error());
if(mysql_num_rows($sql3)==0){
死亡(“没有结果”);
}否则{
$pageContent.='';
while($row=mysql\u fetch\u assoc($sql3)){
$linkAd=($row['link']);
$linkDesc=($row['desc']);
$linkDomain=($row['domain']);
$pageContent.='
';
}
}
试试这个:
"This is '" . $variable . '" wow"
使用双引号:
echo "This is " . $variable . " wow";
您需要输入从MySQL检索的字符串。没有其他方法可以将字符串解释为PHP代码。然而,无论如何都应该避免使用eval()。您最好使用模板系统或简单的字符串替换系统,而不是评估数据库中的内容。这可能要简单得多。就这么做吧
echo "This is '$variable' wow";
这就是你所需要的。不需要离开字符串上下文并返回。外部双引号将计算变量的值。如果您在外部使用了单引号,那么它将作为$variable进行计算,而不是它的值
因此,您可以编写如下select语句:
$sql = "SELECT * FROM fancytbl WHERE id = '$id' AND myhands = 'diamonds'";
请看,这很简单。您在这里所做的是尝试从数据库回显字符串,但用特定值替换占位符文本。要做到这一点,您不能只存储一个PHP解析器将以特定方式处理的字符串,并期望PHP在运行时看到该字符串时以相同的方式处理它 以下是我的建议:对要替换的字符串部分使用更直接的分隔符,如下所示:
"This is :variable: wow"
并使用str_replace()
来响应正确的内容。(您也可以出于同样的目的使用sprintf()
(此处$mystring
包含数据库中的字符串。)看起来您的引号不匹配。尝试将db值设置为“This is”。$variable。“wow”尝试了这个并显示为“$variable”。引号是这样的,因为echo'd字段显示在另一个变量中,碰巧它与某种声明有关吗?喜欢htmlspecialchars@Mark好的,谢谢你的编辑,这让我发疯了。我试图做的是当$linkDesc
是echo'ddisplays as'“.$variable.”显示为“.$variable.”时,使$model
的值显示在desc
字段的值中。OP将字符串作为文本文本显示在其数据库中。回显包含字符串的变量不会神奇地将其视为PHP代码。这是正确的+1.另一个问题是,为什么要将变量存储在数据库中?你不应该将变量内容存储在数据库中,并改变存储/显示内容的方式吗?我看不出有什么理由建议在这里使用eval()
,因为OP中没有任何内容表明他除了echo参数化字符串之外还想做任何事情。eval()需要有效的JS代码。您需要执行$var='cool'$string='这是$var';eval(\$newstring='$string')代码>。但再一次,eval()是邪恶的。您不是在做简单的字符串替换,而是在尝试动态编写一个全新的PHP脚本。这是个坏主意。改用str_replace()之类的方法。@Hammerite:是的,但OP正在将插入表(x)的值('This$variable')
,以便将文字$variable
放在数据库中。除非您想执行str_replace($string,$variable,'cool'),否则无法解释检索到的字符串并用其值替换$varaible
,而不使用eval代码>查看数据库“$model=stripslashes($row['model']);”中的变量内容,这就是为什么它比我的示例稍微复杂一点的原因。我在想stripslashes需要被替换,正如前面所说的,一个指令说,链接
字段包含的php代码是$model?听起来我们都在同一个页面上,让我把这些信息放进去,我会让你知道:)谢谢!在这种情况下,stru将如何取代work<代码>$linkAd=($row['link'])代码>变量位于字段链接中的一个值内,我不确定您在问什么。是否要检索列链接
,并替换其中出现的占位符?只需使用$linkAd=str_replace(':variable:',$variable,$row['link'])
。或者您是说要使用link
的值来执行替换?使用echo str_replace(':variable:',$row['link'],$mystring)
。它比我承诺的小示例更复杂:)不过基本思想是存在的。
echo str_replace(':variable:', $variable, $mystring);