PHP在字符串中使用字符串

时间:2015-11-30 04:48:23

标签: php wordpress

我想将下面代码中的401更改为基于我网站上的值的字符串,如

$sql2 = 'SELECT post_content2 FROM wp_posts WHERE ID = '$jeff'' 

但我正在

解析错误:语法错误,第384行/public_html/wp-content/themes/real-spaces/single-property.php中的意外'$ jeff'(T_VARIABLE)

以下是有效的代码:

if(! $conn2 )
{
  die('Could not connect: ' . mysql_error());
}
 $sql2 = 'SELECT post_content2 FROM wp_posts WHERE ID = 401' ;
mysql_select_db('fncletvn_wp389');
$retval2 = mysql_query( $sql2, $conn2 );

if(! $retval2 )
{
  die('Could not get data: ' . mysql_error());
}

while($row2 = mysql_fetch_array($retval2, MYSQL_ASSOC))
{
  echo "{$row2['post_content2']}  <br> " ;

}

我对编程非常陌生,所以请帮忙:D 顺便说一句,我想要做的是根据当前帖子的ID从数据库中提取post_content2的值,这是$ jeff

4 个答案:

答案 0 :(得分:1)

只需使用这样的引号:

$sql2 = "SELECT post_content2 FROM wp_posts WHERE ID = '$jeff'";

这将创建sql字符串:

SELECT post_content2 FROM wp_posts WHERE ID = '401'

$jeff=401

但根据你的问题,如果你想这样:

SELECT post_content2 FROM wp_posts WHERE ID = 401

只需使用:

$sql2 = "SELECT post_content2 FROM wp_posts WHERE ID = $jeff";

仅供参考:单引号不会用值替换PHP变量,而是按原样打印变量。双引号将替换。

答案 1 :(得分:1)

您可以使用@myway给出的答案,也可以使用mysql预备语句。我建议您使用预先准备好的语句,因为它们是安全且可重用的。

答案 2 :(得分:0)

请注意,如果您使用前一位评论者所指示的$sql2 = "SELECT post_content2 FROM wp_posts WHERE ID = $jeff";$sql2 = "SELECT post_content2 FROM wp_posts WHERE ID = $jeff";,则必须引用$jeff

请务必事先先申请mysql_escape_string($jeff)

另外,我现在你没有问过这个问题,但我绝对要警告你mysql_*函数已被折旧,除非修改现有代码,否则你永远不应该使用它们 - 在这种情况下你应该正在积极地将您的代码更改为mysqli_*变体。

答案 3 :(得分:0)

您还错过了代码中的连接运算符:$sql2 = 'SELECT post_content2 FROM wp_posts WHERE ID = '$jeff''

PHP的concatenation operator.

像这样使用它:     $sql2 = 'SELECT post_content2 FROM wp_posts WHERE ID = '.$jeff;

如果$ jeff是一个字符串,而不是一个int,你需要将它括在引号中,如下所示:     $sql2 = 'SELECT post_content2 FROM wp_posts WHERE ID = "'.$jeff.'"';

但是,如果客户端以任何方式提供$ jeff,则应使用prepared statements来防止mysql注入。

PHP试图用Parse错误告诉你什么:语法错误,意外&#39; $ jeff&#39; (T_VARIABLE),它不知道为什么在赋值操作中字符串旁边有变量。也不是你想用它做什么。连接运算符表示您希望该变量连接到它旁边的字符串,就像它也是一个字符串一样。这在PHP等松散类型的语言中成为一个重要的区别。