Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么$friend没有在FQL JSON查询中展开?_Php_String_Quotes - Fatal编程技术网

Php 为什么$friend没有在FQL JSON查询中展开?

Php 为什么$friend没有在FQL JSON查询中展开?,php,string,quotes,Php,String,Quotes,我正试图在PHP中用FQL设置一个带变量的多查询。但我似乎无法让它正常工作 $fql = '{ "uid" : "SELECT uid FROM user WHERE username = \"$friend\"", "album": "SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)",

我正试图在PHP中用FQL设置一个带变量的多查询。但我似乎无法让它正常工作

  $fql = '{
        "uid"   : "SELECT uid FROM user WHERE username = \"$friend\"",
        "album": "SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)",
        "photo": "SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)"
    }';
这基本上是试图获得你朋友相册的封面照片

如果我直接输入一个朋友的用户名来代替$friend,我会得到所有的结果,但是上面的代码中没有$friend是动态设置的

出什么事了!!?? 谢谢

这将输出:

The number is: 85.
这将输出:

The number is: 85.

PHP不会对使用单引号的字符串求值。在这种情况下,应使用点运算符连接它们:

$fql = '{
        "uid"   : "SELECT uid FROM user WHERE username = \"' . $friend . '\"",
        "album": "SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)",
        "photo": "SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)"
    }';

您应该看看。

使用单引号的字符串不是由PHP计算的。在这种情况下,应使用点运算符连接它们:

$fql = '{
        "uid"   : "SELECT uid FROM user WHERE username = \"' . $friend . '\"",
        "album": "SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)",
        "photo": "SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)"
    }';

您应该看看。

在SQL中,通常所有的varchar都在单引号之间,而不是双引号之间 你试过这个吗

"SELECT uid FROM user WHERE username = '" . $friend . "'",

在SQL中,所有varchar通常位于单引号之间,而不是双引号之间 你试过这个吗

"SELECT uid FROM user WHERE username = '" . $friend . "'",

在PHP中,双引号字符串内的变量将被计算,而单引号字符串内的变量将不会被计算

最好的解决方案是反转引号,使字符串如下所示:

$fql = "{
    'uid'   : 'SELECT uid FROM user WHERE username = '$friend',
    'album': 'SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)',
    'photo': 'SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)'
}";

这将导致将
$friend
计算为变量的值。

在PHP中,将计算双引号字符串中的变量,而不计算单引号字符串中的变量

最好的解决方案是反转引号,使字符串如下所示:

$fql = "{
    'uid'   : 'SELECT uid FROM user WHERE username = '$friend',
    'album': 'SELECT object_id, link, aid, cover_pid, location, name FROM album WHERE owner IN (SELECT uid FROM #uid)',
    'photo': 'SELECT src FROM photo WHERE pid IN (SELECT cover_pid FROM #album)'
}";

这将导致将
$friend
计算为变量的值。

这仍然不起作用。整个JSON是一个字符串(在本例中是单引号)。这仍然不起作用。整个JSON是一个字符串(在本例中是单引号)。请注意,外部引号是
'
s而不是
s。请注意,外部引号是
'
s而不是
s。这不是很有效。由于不平衡的引号和“断断续续”的引号,生成的JSON在
'$friend'
周围乱七八糟。可能只是想把它吸起来并使用
\”
或here-doc。这不是很有效。生成的JSON由于不平衡的引号和“乱七八糟”的引号而在
'$friend'
周围乱七八糟。可能只是想把它吸起来并使用
\“
或here-doc>。