我想将下面代码中的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
答案 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等松散类型的语言中成为一个重要的区别。