СЕССИЯ var в запросе mysql - PullRequest
1 голос
/ 19 ноября 2011

Можно ли использовать $_SESSION[var] в INSERT и SELECT операторах mysql, как показано ниже

$query = "INSERT INTO table1 (id, var1, var2)
            VALUES (NULL, '$_SESSION[var1]', '$_SESSION[var2]')";
mysql_query($query);
die(mysql_error()); 

ПРИМЕЧАНИЕ: у меня есть session_start(); в начале всех моих страниц.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Хорошая идея очистить ваши переменные перед выполнением запросов к ним:

$var1 = mysql_real_escape_string($_SESSION['var1']);
$var2 = mysql_real_escape_string($_SESSION['var2']);

$query = 
    "INSERT INTO table1 (id, var1, var2) " .
    "VALUES (NULL, '" . $var1 . "', '" . $var2 . "')";

mysql_query($query) or die(mysql_error()); 

Обратите внимание, что ваша последняя временная строка кода die(mysql_error()) приведет к остановке выполнения скрипта независимо от того,Независимо от того, произошла ошибка.

Кроме того, вы можете посмотреть PDO для взаимодействия вашей базы данных.

1 голос
/ 19 ноября 2011

Да. На мой взгляд, лучший способ указать переменную массива в интерполированной строке - это заключить в нее фигурные скобки, чтобы можно было использовать одинарные кавычки вокруг ключа массива:

$query = "INSERT INTO table1 (id, var1, var2)
              VALUES (NULL, '{$_SESSION['var1']}', {$_SESSION['var2']}')";
...