转义双引号时出错

时间:2014-03-12 18:09:50

标签: php sql mysqli escaping quotes

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

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

我收到以下错误:

解析错误:语法错误,意外“”,期待标识符(T_STRING)

而且,为了澄清,它在上面显示的代码行上。

请帮帮我。

更新:以下是该部分:

<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>

由于各种原因,它必须像PHP一样将PHP写入JavaScript部分

3 个答案:

答案 0 :(得分:1)

将您的查询转换为

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

答案 1 :(得分:1)

你误解了PHP代码的双引号是如何工作的。只有php附件<?php amd ?>中的代码才能由php执行,其余代码只会显示在输出到浏览器的页面上。

例如:

<script>
  var myvar = "<?php print "foo bar"; ?>";
  alert(myvar);
</script>

会发出警告

foo bar

查看您的网页来源,查看document.getElementById("Divvy").innerHTML设置的内容。在那里你会看到你的mysql错误最有可能或有效的输出。但是不要仅仅因为它在你的php打开/关闭标签之外的html / js中用双引号包围而逃避你的php代码中的字符串

修改

您的代码无法正常工作的原因是因为您的查询因此行未返回任何结果:

$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脚本中使用。

答案 2 :(得分:0)

试试:

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

BWT你在用javascript混合php吗?