使用$ _SESSION时出现mysqli_query语法错误

时间:2017-06-18 06:28:54

标签: php

我有这样的错误

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

这是我的代码(我使用$ _SESSION从另一页获取变量。)

$sql="insert into data(name,sex,time,suggest,eat,problem,student_suggest,tutor_suggest,other_suggest)   
values('$_SESSION['name']','$_SESSION['gender']','$_SESSION['time']','$_SESSION['suggest']','$_SESSION['eat']',  '$_SESSION['problem']','$_SESSION['student']','$_SESSION['tutor']','$_SESSION['other']')";

mysqli_query($cn,$sql) or die(mysqli_error($cn));

2 个答案:

答案 0 :(得分:1)

您需要正确记下变量。 它不可能是:

values('$_SESSION['name']',

必须是:

values('".$_SESSION['name']."',

另一个好方法是使用PDO

$dbh = new PDO('mysql:host=localhost;dbname=data', $user, $pass);

$stmt = $dbh->prepare("INSERT INTO data (name, sex) VALUES (:name, :sex)");
$stmt->bindParam(':name', $_SESSION['name']);
$stmt->bindParam(':sex', $_SESSION['gender']);
$stmt->execute();

答案 1 :(得分:1)

你在worng sequnence中使用单引号,这会产生错误的代码..

您可以使用字符串concat来避免问题

但要小心使用php var in sql进行sqlijcection,(你应该使用PDO和param绑定。 无论如何与你的问题有关

      $sql="insert into data(name,sex,time,suggest,eat,problem,student_suggest,tutor_suggest,other_suggest)   
      values(" . $_SESSION['name'] . ","
      . $_SESSION['gender'] . ","
      . $_SESSION['time'] . ","
      . $_SESSION['suggest'] . ","
      . $_SESSION['eat']', . ","
      . $_SESSION['problem'] . ","
      . $_SESSION['student'] . ","
      . $_SESSION['tutor'] . ","
      . $_SESSION['other'] . ")";