为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这会给我一个语法错误?PHP PDO

为什么这会给我一个语法错误?PHP PDO

PHP
ibeautiful 2022-01-24 09:42:19
我通常很擅长这个,当我完成我的项目时;我遇到了一个错误。PDO 给了我一个语法错误,我无法理解。也许我只是累了,但这让我发疯。这是我用于我的 PHP 代码的内容:$records = $conn->prepare('INSERT INTO users (username, email, password, limit) VALUES (:username, :email, :password, :theLimit)');$records->bindParam(':username', $_POST['username']);$records->bindParam(':password', password_hash($_POST['password'], PASSWORD_BCRYPT));$records->bindParam(':email', $_POST['email']);$records->bindParam(':theLimit', $_GET['amt']);我的数据库如下:CREATE TABLE `users` (  `id` int(11) UNSIGNED NOT NULL,  `username` varchar(250) NOT NULL DEFAULT '',  `email` varchar(250) NOT NULL DEFAULT '',  `password` varchar(200) NOT NULL DEFAULT '',  `limit` varchar(200) NOT NULL DEFAULT '',   PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;我得到的错误是这样的:Array ( [0] => 42000 [1] => 1064 [2] => 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 'limit) VALUES ('F', 'some_person@email.com', '$2y$10$gacC/a8zA3jCbPpKNTddtu4dBG' at line 1 )最后,URL 如下所示:https://website.com/reg.php?serial=306019525D31&amt=10我什至尝试过:$records->bindParam(':theLimit', $_POST['email']);认为它可能是 URL。同样的错误。我重做了数据库,同样的错误。有任何想法吗?
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

LIMIT是一个保留的 MySQL 关键字,所以你应该转义它:


$sql = "INSERT INTO users (username, email, password, `limit`) ";

$sql .= "VALUES (:username, :email, :password, :theLimit)";

$records = $conn->prepare($sql);

实际上,您应该避免使用LIMIT或任何其他保留关键字来命名您的对象。否则,您将始终必须像上面那样逃避它们。


查看完整回答
反对 回复 2022-01-24
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信