Php 转义双引号时出错

Php 转义双引号时出错,php,sql,mysqli,escaping,quotes,Php,Sql,Mysqli,Escaping,Quotes,我必须在mysqli查询中转义双引号,因为它位于用双引号标记的部分内(长话短说…)。无论如何,当我这样做时: $result = mysqli_query($db, \"SELECT `is_doing` FROM `users` WHERE `users`.`user_name` = '{$user}'\"); 我得到以下错误: 分析错误:语法错误,意外'',应为标识符(T_字符串) 为了澄清,它位于上面显示的代码行上 请帮帮我 更新:以下是部分: <script type="text

我必须在mysqli查询中转义双引号,因为它位于用双引号标记的部分内(长话短说…)。无论如何,当我这样做时:

$result = mysqli_query($db, \"SELECT `is_doing` FROM `users` WHERE `users`.`user_name` = '{$user}'\");
我得到以下错误:

分析错误:语法错误,意外'',应为标识符(T_字符串)

为了澄清,它位于上面显示的代码行上

请帮帮我

更新:以下是部分:

<script type="text/javascript">
function announce(user_name){
document.getElementById("Divvy").innerHTML="<?php 
$user='"+user_name+"';
if($user != 'Contact list'){
$result = mysqli_query($db, \"SELECT `is_doing` FROM `users` WHERE `users`.`user_name` = '{$user}'\");
while($row = $result->fetch_assoc()){
print_r($row);
}
echo $user.' is doing something that you will soon know about';
}
?>";
}
</script>

功能公告(用户名){
document.getElementById(“Divvy”).innerHTML=“”;
}
出于各种原因,它必须像将查询转换为

$result = mysqli_query($db, "SELECT `is_doing` FROM `users` WHERE `users`.`user_name` = '{mysqli_escape_string($user)}'");

您误解了php代码中的双引号是如何工作的。php只会执行php附件
中的代码,其余的代码只会显示在输出到浏览器的页面上

例如:

<script>
  var myvar = "<?php print "foo bar"; ?>";
  alert(myvar);
</script>
查看页面源代码,查看
document.getElementById(“Divvy”).innerHTML
设置为等于什么。在那里,您将看到最有可能出现的mysql错误或有效的输出。但不要仅仅因为php打开/关闭标记外的html/js中有双引号而转义php代码中的字符串

编辑:

function jstophp(){


var javavar=document.getElementById("text").value;  

document.getElementById("rslt").innerHTML=""+javavar+"";
}

function phptojs(){

var javavar2 = "I am php variable value";
alert(javavar2);
}
代码不起作用的原因是,由于此行,查询未返回任何结果:

$user='"+user_name+"';
您正在尝试使用JavaScript变量设置PHP变量。这是无法完成的!PHP由服务器执行,JavaScript由浏览器在代码发送给用户后执行

来自评论:

function jstophp(){


var javavar=document.getElementById("text").value;  

document.getElementById("rslt").innerHTML=""+javavar+"";
}

function phptojs(){

var javavar2 = "I am php variable value";
alert(javavar2);
}
看看实际的源代码。该函数只是提醒一个用PHP设置的变量,而不是将一个变量从JavaScript发送到PHP以在PHP脚本中使用。

试试:

   $result = mysqli_query($db, "SELECT `is_doing` 
                                FROM `users` 
                                WHERE `users`.`user_name` = '$user' ");

BWT您是否将php与javascript混合使用???

很抱歉,我没有看到最后一行,因此您需要学习php中字符串的基本知识。访问-现在没有错误,但查询仍然没有返回任何可见值。db连接没有问题;现在在MySQL中运行相同的查询,看看结果如何。可能您的查询不正确添加了一个die子句,但什么也没有发生
,因为它位于一个用双引号标记的节中
可以显示此节的更多内容吗?不能以
\“
\”开头字符串
。这在字符串中使用,以避免字符串意外结束。@amaster507我已用更多信息更新了问题code@user3411896查看我编辑的答案,查看您的真实问题,更好地理解PHP与JavaScription的交互这就是AJAX如此流行的原因,因为它允许JavaScript按照您的意愿与PHP交互当然是一个可变的东西(尽管我不知道为什么echo工作得很好),我如何在AJAX中做到这一点?@user3411896在我的编辑中查看对您评论的回应。还可以对ajax进行一些研究,如果遇到问题,可以发布一个新问题。因此,这不是我们向您展示如何完成每一步的地方。@user3411896您的echo输出
“+user_name+”正在做一些您很快就会知道的事情,因为这正是您告诉它要做的事情。查询不返回任何结果,您可能已经关闭了PHP通知,这样您就不会收到关于未定义变量
$row
的警告,然后PHP脚本继续使用变量回显您的字符串,该变量也是字符串“+user\u name+”@user3411896 JavaScript,然后显示为
”+user\u name+“正在做一些你很快就会知道的事情“
它在浏览器级别将变量替换为自己的变量,这样您就可以看到正确的用户名。再看一遍源代码。如果变量是从JavaScript传递到PHP的,那么innerhtml集将包含实际的JavaScript变量值本身,而不是名称。查看此链接,但要小心,并记住在查询中使用前转义所有GET和POST数据