php - sql查询PDO绑定参数
问题描述
我试图将电子邮件和电子邮件密码插入到已经包含用户名和密码的表中。我正在使用的查询:
<?php
session_start();
include 'config.php';
$username = $_SESSION['username'];
$uname = $_POST['email'];
$pass = $_POST['passne'];
$sql = "INSERT INTO users(email, emailpassword) VALUES (:uname, :pass) WHERE username = :username";
$query = $conn->prepare($sql);
$query->bindParam(':uname', $uname, PDO::PARAM_STR);
$query->bindParam(':pass', $pass, PDO::PARAM_STR);
$query->bindParam(':username', $username, PDO::PARAM_STR);
$query->execute();
echo "Success";
?>
但它显示了这个错误
致命错误:未捕获的 PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在 C:\xampp\htdocs\b\update.php:14 中的第 1 行的 'WHERE username = 'thansiya123'' 附近使用正确的语法:堆栈跟踪:#0 C: \xampp\htdocs\b\update.php(14): PDOStatement->execute() #1 {main} 在第 14 行的 C:\xampp\htdocs\b\update.php 中抛出
解决方案
INSERT INTO users(email, emailpassword) VALUES (:uname, :pass) WHERE username = :username
这不是有效的 SQL。如果给定用户的记录已经存在并且您想要设置一些字段,您需要UPDATE
查询,而不是INSERT
:
UPDATE users set email = :uname, emailpassword = :pass where username = :username
推荐阅读
- windows - 不能使用大于 4 个字节的字符串
- google-sheets - 使用公式进行转换的行复制
- swift - 如何设置 NSTextField 左上角原点?
- c# - 使用 Ajax 后未在 Grid 中显示最近输入的数据
- installshield - InstallShiled2011+安装文件夹被删除
- javascript - 将哈希设置为 fancybox 导致错误
- javascript - 如何添加具有不同元素的数组并使用javascript添加重复元素值
- c++ - 指向函数的 C++ 复制构造函数成员指针
- app-store - 我们是否需要相同的捆绑包 ID 才能将更新推送到应用商店
- php - 随机数生成器是原子的吗