php - 将值插入 mysql

标签 php mysql

我有用户个人资料更新页面,并且有一些表格需要更新,在这里

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/

相关文章:

php - 不同的服务器,不同的数据类型,具有完全相同的代码

php - 来自文本文件的数组使用 php 返回大量空白空间

php - Laravel 在调用 orderBy 后奇怪地处理特殊字符

MySQL 和 2 列主键

mysql比较两个表找出不匹配的记录

MySQL 日期/作者比较

php - 在 suitecrm 创建提醒工作流程的正确方法?

PHP 彩票机会

php - 在 magento 中单独的帐单/送货地址?

php - 将txt文件导入Mysql