PHP mysql查询insert where

标签 php mysql mysqli

<分区>

我正在尝试确认用户电子邮件,其中用户验证 key 是变量 $verify_mod。但是,我得到了错误,

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE verification='72b4ad7ee82dd6e177f2588c168abb51user=test123'' at line 1

这是我的查询:

$confirm_query = "INSERT INTO users (confirm_email) VALUES ('1') WHERE verification='$verify_mod'";

最佳答案

INSERT 语句不带有 WHERE 子句。您要么尝试插入某些内容,在这种情况下您应该删除 WHERE 子句,要么您想要修改一个值,在这种情况下您应该使用 UPDATE .. SET。

// For an insert:
$confirm_query = "INSERT INTO users (confirm_email) VALUES ('1')";
// For an update:
$confirm_query = "UPDATE users SET confirm_email='1' WHERE verification='$verify_mod'";

除此之外,在表名和列名周围放置 ` 字符总是一个好主意,以降低 SQL 注入(inject)的风险。所以:

// For an insert:
$confirm_query = "INSERT INTO `users` (`confirm_email`) VALUES ('1')";
// For an update:
$confirm_query = "UPDATE `users` SET `confirm_email`='1' WHERE `verification`='$verify_mod'";

最后,我不知道您使用的是 mysqli_* 函数还是 PDO 或 mysql_* 函数(在后一种情况下,您绝对应该更改为其他函数之一,因为 mysql_* 已被弃用)。在前两种情况中的任何一种情况下,您都应该使用参数化查询或 prepared statements .您准备查询,然后填写变量(此处为 $verify_mod)。这样,变量就会再次正确转义,以降低 SQL 注入(inject)的风险。

关于PHP mysql查询insert where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829743/

相关文章:

php执行多个命令,apache重启

php - 在 while 循环内从 mysql 获取一个值并在 while 循环内使用它

php - 如何将 mysqli 对象传递给类构造函数

php - Web 应用程序的图像大小调整

php - 回显前一个函数的返回值

php - 选择具有特定 MySql 请求 PHP 的所有用户

php - 选择特定列并将其值传递给查询后,如何获取该列中的值?

php - mysqli 连接在 __construct 中完成并导致连接过多

php - 为什么我的 detach() 和 delete() 不起作用?

php - 尝试添加一些条件来排除某些结果