eror:updatequery

gpnt7bae  于 2021-06-15  发布在  Mysql
关注(0)|答案(4)|浏览(246)

我是一个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 ,对查询仍然没有改变的情况。

rhfm7lfc

rhfm7lfc1#

您的sql语句中有一个错误(如错误消息所示)。在mysql中,错误消息通常指出错误发生的确切位置,并且通常引用导致问题的第一个字符/单词。
对你来说,那是 lastname . 到目前为止,您的更新查询是:

UPDATE data SET firstName ='fname' lastName ='Lname' WHERE email ='qwerty@example.com'
--                                 ^ error occured here

当您查找更新查询的外观时(mysql文档),您会发现不同的更新字段必须用逗号分隔:

UPDATE data SET firstName ='fname', lastName ='Lname' WHERE email ='qwerty@example.com'
--                                ^ add this here

此外,您还容易受到sql注入的攻击(请仔细阅读它们,以及如何防止它们—这是通过准备好的语句来实现的)

neskvpey

neskvpey2#

使用对sql注入开放的代码的另一个问题是,您可以从输入端轻松地更改sql语句的语法。例如,如果输入“o'connor”作为姓氏,则更改语法。尝试使用 echo $query 然后分析输出,或者更好的是,复制并直接运行它,而不使用php

mgdq6dx1

mgdq6dx13#

正如评论中提到的。更新多个字段时,需要用逗号分隔它们:

UPDATE data 
set 
field1="meh", /* <-- comma */
field2="foo" 
where otherField="something"
uidvcgyl

uidvcgyl4#

请尝试使用它(sql查询中缺少逗号)。

$query = "UPDATE data SET firstName ='".$_POST['fname']."', lastName ='".$_POST['lname']."'  WHERE email ='".$_SESSION['username']."'";

相关问题