我正在尝试使用以下代码将数据添加到Mysql数据库:
$sql = mysql_query("UPDATE members SET name = '$name' WHERE id = '$_SESSION['username']' ");
但是当我跑步时,我收到以下错误:
解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE), 期待标识符(T_STRING)或变量(T_VARIABLE)或数字 (T_NUM_STRING)
我做错了什么?
答案 0 :(得分:2)
像这样使用:
mysqli_query($connection,"UPDATE members SET name = '.$name.' WHERE id = ".$_SESSION['username']);
答案 1 :(得分:1)
为了修复这个,您必须修复此部分:'$_SESSION['username']'
。因为正如你所看到的那样你是'
的双重字符串(这是我能解释的最好的)。因此,您需要将查询更改为此类内容。
$sql = mysql_query("UPDATE members SET name = '$name' WHERE id = ".$_SESSION['username']);
<小时/> 警告强>:
您应该不再使用mysql_
个功能! 为什么?阅读this关于它的问题,你真的不应该再使用它了。
现在,您应该使用什么?了解如何使用PDO
或 mysqli_
,您可以了解PDO
here和mysqli_
here
在此期间,您还应该了解sql injection
是什么,这是让您的项目更安全,更好的下一步。阅读所有关于here的内容,其中有一些很好的例子和解释。
最后,这是一个如何使用mysqli
:
$conn = new mysqli($servername, $username, $password, $dbname);
$stmt = $conn->prepare(UPDATE members SET name =? WHERE id =?);
$stmt->bind_param("ss", $name, $id);
$name = "Nytrix";
$id = $_SESSION['username'];
$stmt->execute();
$stmt->close();
$conn->close();
准备这样的语句,并在稍后阶段绑定值会消除sql injection
的风险。
我希望这有助于你澄清一下mysql的主题。