簡體   English   中英

如何在MySQL查詢中使用會話變量

[英]How to use Session Variable in MySQL Query

我試圖執行此查詢-

$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');";

而且有效。

但是我想知道為什么前兩個不起作用,為什么我們必須將Session保存到另一個變量中才能起作用?

請幫忙 :)

問題

您的代碼中有語法錯誤

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

'$_SESSION['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']."')";

您可以使用

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

參見http://php.net/manual/en/language.types.string.php#language.types.string.parsing.simple

如果您有理由這樣做,那么,我不能為您提供幫助。 但還是一如既往:PHP很老,並且發展了很多,因此引入了不一致的語法。

還檢查如何在雙引號內使用關聯數組

http://php.net/manual/en/language.types.array.php#language.types.array.foo-bar

http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM