我有用户个人资料更新页面,并且有一些表格需要更新,在这里
NAME
SURNAME
password
phone
我试图在没有大脚本的情况下进行此更新,我的意思是我不想定义例如 NAME 是否存在等等。我希望如果存在任何标记的表单值,它会在 mysql 中发生更改。我怎么知道这可以通过 mysqli_prepare 语句实现。我是这样写sql的
$stmt = "UPDATE table SET NAME=?,SURNAME=?,PASSWORD=?,PHONE=? WHERE email='" . $email . "'";
但是出了点问题,有什么想法该怎么做吗?还请告知为什么使用 mysqli_prepare 是更好的方法,为什么它也安全? 附言。我不写 php 脚本,因为我没有任何问题
更新
我已经在 php 中标记了 sql 语句并在这个脚本上方我正在写这个 =>
if (isset($_POST['name']){
$name = $_POST['name'];
} else {
$name = null;
}
等等...
但是它没有执行,没有显示任何错误消息,因为我认为sql语句有问题
只是想如果一些细节被填充,它会更新,如果所有字段都被填充并更新,如何用脚本编写?
我无法理解sql语句中的这个问号,这是否意味着如果例如NAME不存在,它将被忽略?
最佳答案
SQL 字符串中的问号不是 SQL 语法的一部分,它们是实际参数的占位符。如果你想这样做,你应该先编写一条SQL语句,然后设置参数。
类似
$con = new mysqli($hostname,$username,$password,$database);
$statement = $con->prepare( "UPDATE table SET NAME=?,SURNAME=?,".
"`PASSWORD`=?,PHONE=? ".
" WHERE email=?");
$statement->bind_param("sssss",$name,$surname,$pass,$phone,$email);
源自 http://www.xphp.info/security/getting-started-with-mysqli/ 的示例
另请注意 ThiefMaster 的评论:password
是 MySQL 中的保留字,因此您需要将其放在反引号中 (``
)
或者,您可以直接将值插入 mysql 字符串,就像您最初对电子邮件地址所做的那样。 您需要使用 mysql_real_escape_string()
请注意,在这两种情况下,您都会将所有值替换为设置的值,无论是 NULL
还是字符串,或者其他任何值。
关于php - 将值插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591001/