Php 如何在MySQL查询中使用会话变量

Php 如何在MySQL查询中使用会话变量,php,mysql,session,Php,Mysql,Session,我试图执行这个查询- $sql="INSERT INTO REGISTRATIONS VALUES ('$_SESSION['fname']', '$_SESSION['username']', '$_SESSION['height']', '$_SESSION['image']');"; 还有这个- $sql="INSERT INTO REGISTRATIONS VALUES ($_SESSION['fname'], $_SESSION['username'], $_SESSION['hei

我试图执行这个查询-

$sql="INSERT INTO REGISTRATIONS VALUES ('$_SESSION['fname']', '$_SESSION['username']', '$_SESSION['height']', '$_SESSION['image']');";
还有这个-

$sql="INSERT INTO REGISTRATIONS VALUES ($_SESSION['fname'], $_SESSION['username'], $_SESSION['height'], $_SESSION['image']);";
但这两个函数都返回一个错误。因此,我将会话变量存储到普通php变量中。并尝试执行查询-

$name = $_SESSION['fname'];
$username = $_SESSION['username'];
$height = $_SESSION['height'];
$image = $_SESSION['image'];

$sql="INSERT INTO REGISTRATIONS VALUES ('$name', '$username', '$height', '$image');";
它成功了

但我想知道为什么前两个不起作用,为什么我们必须将会话保存到另一个变量中才能使它起作用

请帮助:)

试试这些

$sql="INSERT INTO REGISTRATIONS VALUES ('".$_SESSION['fname']."', '".$_SESSION['username']."', '".$_SESSION['height']."', '".$_SESSION['image']."')";
试试这些

$sql="INSERT INTO REGISTRATIONS VALUES ('".$_SESSION['fname']."', '".$_SESSION['username']."', '".$_SESSION['height']."', '".$_SESSION['image']."')";
你可以用

echo "$_SESSION[name]";
echo "{$_SESSION['name']}";

如果你想知道这样做的原因,好吧,我帮不了你。但和往常一样:PHP很古老,并且已经发展了很多,因此引入了不一致的语法

还要检查如何在双引号内使用关联数组

您可以使用

echo "$_SESSION[name]";
echo "{$_SESSION['name']}";

如果你想知道这样做的原因,好吧,我帮不了你。但和往常一样:PHP很古老,并且已经发展了很多,因此引入了不一致的语法

还要检查如何在双引号内使用关联数组

问题 此代码中存在语法错误

$sql = "
    INSERT INTO REGISTRATIONS
    VALUES (
        '$_SESSION['fname']',
        '$_SESSION['username']',
        '$_SESSION['height']',
        '$_SESSION['image']'
    );
";
“$\u会话['fname']”
在此处导致错误。如果没有特殊语法,您无法访问字符串中的数组索引(请参见下文)

解决方案 使用串联运算符

$sql = "
    INSERT INTO REGISTRATIONS
    VALUES ('"
    .$_SESSION['fname'].
    "', '"
    .$_SESSION['username'].
    "', '"
    .$_SESSION['height'].
    "','"
    .$_SESSION['image'].
    "');";
或者使用PHP,请参阅“复杂(卷曲)语法”。 这是首选方式。

$sql = "
    INSERT INTO REGISTRATIONS
    VALUES (
        '{$_SESSION['fname']}',
        '{$_SESSION['username']}',
        '{$_SESSION['height']}',
        '{$_SESSION['image']}'
    );
";
请注意,这只适用于双引号字符串。

问题 此代码中存在语法错误

$sql = "
    INSERT INTO REGISTRATIONS
    VALUES (
        '$_SESSION['fname']',
        '$_SESSION['username']',
        '$_SESSION['height']',
        '$_SESSION['image']'
    );
";
“$\u会话['fname']”
在此处导致错误。如果没有特殊语法,您无法访问字符串中的数组索引(请参见下文)

解决方案 使用串联运算符

$sql = "
    INSERT INTO REGISTRATIONS
    VALUES ('"
    .$_SESSION['fname'].
    "', '"
    .$_SESSION['username'].
    "', '"
    .$_SESSION['height'].
    "','"
    .$_SESSION['image'].
    "');";
或者使用PHP,请参阅“复杂(卷曲)语法”。 这是首选方式。

$sql = "
    INSERT INTO REGISTRATIONS
    VALUES (
        '{$_SESSION['fname']}',
        '{$_SESSION['username']}',
        '{$_SESSION['height']}',
        '{$_SESSION['image']}'
    );
";

请注意,此选项仅适用于双引号字符串。

请说明错误?请说明错误?谢谢。解释得很好。:)非常感谢。解释得很好。:)谢谢不完全是我想要的,但在某种程度上帮助了我。也谢谢所有的链接。谢谢。不完全是我想要的,但在某种程度上帮助了我。也感谢所有的链接。