[英]PHP-MYSQL Update Error
在我的数据库中,在 'users' 表中有列如 uname 、 name 、 sname 、 password 和 email 。 'uname' 是独一无二的。
我无法更新姓名、姓名和电子邮件值。
我收到“
Error updating record: Erreur de syntaxe près de 'manager''' à la ligne 2
首先我不知道为什么它是法语。 'manager' 是我在数据库中定义的用户名。
$uname = $_SESSION['username'];
值来自之前的脚本。
<?php
require_once("db_functions.php");
session_start();
$uname = $_SESSION['username'];
$new_name="";
$new_sname="";
$new_email="";
if( !(isset($_SESSION['update'])) || $_SESSION['update'] != "1" )
{
$errorMsg= "Problem has occured in Update page";
echo $errorMsg;
// header can be added.
}
else
{
if(isset($_POST['Submit_update']))
{
$conn=db_connect();
if ($conn)
{
$SQL_select="SELECT * FROM users WHERE username=$uname";
$select_result=mysqli_query($conn,$SQL_select);
$new_name=mysqli_real_escape_string($conn,$_POST['name']);
$new_sname=mysqli_real_escape_string($conn,$_POST['sname']);
$new_email=mysqli_real_escape_string($conn,$_POST['email']);
$SQL_update="UPDATE users SET name='$new_name', sname='$new_sname',
email='$new_email' WHERE uname='$uname'";
$update_result=mysqli_query($conn,$SQL_update);
if ($update_result) { echo "Record updated successfully"; }
else { echo "Error updating record: " . mysqli_error($conn); }
mysqli_close($conn);
}
else {
$errorMsg=" Fail to Connect Database";
echo $errorMsg;
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Upload Page</title>
</head>
<body>
<form name="Update_Form" method="post" action="update.php">
Name:<input type="text" name="name" value=""/><br/>
<P>
Surname:<input type="text" name="sname" value=""/><br/>
<P>
E-Mail:<input type="text" name="email" value=""/><br/>
<input type="submit" name="Submit_update" value="Update"/>
</form>
</body>
</html>
我怀疑$uname
有引号。 由于您没有转义$uname
,因此它结束了字符串值。
您应该使用准备好的查询而不是替换变量,然后您就不需要转义任何内容。
$stmt_update = mysqli_prepare($conn, "UPDATE users SET name= ?, sname= ?,
email=? WHERE uname=?") or die("Error preparing update: " . mysqli_error($conn);
mysqli_stmt_bind_param($stmt_update, "ssss", $_POST['name'], $_POST['sname'], $_POST['email'], $uname);
mysqli_stmt_execute($stmt_update) or die(echo "Error updating record: " . mysqli_stmt_error($stmt_update));
如果您在$uname
的值周围有引号, where username=$uname
在不将引号放入查询的情况下工作,则不应该这样做,它会使其余代码更难使用该变量。 它将阻止上述查询工作,因为它将在表内容中查找文字引号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.