我是一个php初学者,我在一个配置文件页工作。当前的问题是更改名称(这是一个试用页,这就是我更改名称的原因)。由于某些原因,我得到了错误:
sql语法有错误;查看与您的mariadb服务器版本相对应的手册,以了解在“lastname='lname'where email='name'附近使用的正确语法qwerty@example.com“”位于第1行。
<?php
include('server.php');
$db = mysqli_connect('localhost','root','','userdata');
$query = "SELECT * FROM data WHERE email = '".$_SESSION['username']."'";
$result = mysqli_query($db,$query);
$data = mysqli_fetch_assoc($result);
?>
<html>
<head>
<title>Profile</title>
</head>
<body>
<form method="POST" action="">
<p>First name: <input type="text" name="fname" value="<?php echo htmlspecialchars($data['firstName']); ?>" > </p>
<p>Last name: <input type="text" name="lname" value="<?php echo htmlspecialchars($data['lastName']); ?>"> </p>
<p><input type="Submit" name="confirm" value="Confirm"></p>
</form>
<?php
if(isset($_POST['confirm']))
{
$db = mysqli_connect('localhost','root','','userdata');
$query = "UPDATE data SET firstName ='".$_POST['fname']."' lastName ='".$_POST['lname']."' WHERE email ='".$_SESSION['username']."'";
mysqli_query($db,$query);
echo mysqli_error($db); //For checking error.Remove afterwords.
}
?>
<p><a href="homepage.php">HOMEPAGE</a></p>
</body>
</html>
php是一个我管理整个操作的后端的页面,因此它不参与这个操作。html块创建一个表单,用户可以在其中编辑数据。php块应该将数据更新到表中。
我将感谢任何提示,以进一步改善我的网页,因为我仍然是新的这一点。提前谢谢
update:- adding ,对查询仍然没有改变的情况。
4条答案
按热度按时间rhfm7lfc1#
您的sql语句中有一个错误(如错误消息所示)。在mysql中,错误消息通常指出错误发生的确切位置,并且通常引用导致问题的第一个字符/单词。
对你来说,那是
lastname
. 到目前为止,您的更新查询是:当您查找更新查询的外观时(mysql文档),您会发现不同的更新字段必须用逗号分隔:
此外,您还容易受到sql注入的攻击(请仔细阅读它们,以及如何防止它们—这是通过准备好的语句来实现的)
neskvpey2#
使用对sql注入开放的代码的另一个问题是,您可以从输入端轻松地更改sql语句的语法。例如,如果输入“o'connor”作为姓氏,则更改语法。尝试使用
echo $query
然后分析输出,或者更好的是,复制并直接运行它,而不使用phpmgdq6dx13#
正如评论中提到的。更新多个字段时,需要用逗号分隔它们:
uidvcgyl4#
请尝试使用它(sql查询中缺少逗号)。