gpt4 book ai didi

php - 执行 mysqli_query 时出现 SQL 语法错误

转载 作者:行者123 更新时间:2023-11-29 01:40:18 24 4
gpt4 key购买 nike

我有一个带有 MySQLi 和 OOP 的 PHP 注册脚本。但是我在执行查询时遇到 mysql 语法错误。

 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 '-mail, ip_register, ip_lastlogin, lastlogin) VALUES ('', Aarivex, ******, ****' at line 1

PHP 代码:

$register_sql = "INSERT INTO users (id, username, password, pin, e-mail, ip_register, ip_lastlogin, lastlogin) VALUES ('', $username, $password, $pin, $email, $ip, $ip, $lastlogin)";

问题出在哪里?

最佳答案

...for the right syntax to use near '-mail  
SQL's telling you where error starts ^ the offending character

您需要用反引号包裹/封装 e-mail 列,因为它包含一个连字符。

你要计算的 SQL 数字转换为:e 减去 mail

另外,您的值(value)观中缺少引号

$register_sql = "INSERT INTO users (id, username, password, pin, `e-mail`, ip_register, ip_lastlogin, lastlogin) VALUES ('', '$username', '$password', '$pin', '$email', '$ip', '$ip', '$lastlogin')";

这些是字符串,必须在引号内。

  • 另一种选择是使用下划线将您的列重命名为 e_mail,就像您对其他一些列所做的那样。这样,您就不需要使用反引号。

还可以考虑使用以下方法之一:


使用 or die(mysqli_error($con))mysqli_query() 会发出错误信号。

$con 是您的数据库连接,这可能/可能与您的不同。

  • 相应地调整。

标识符(表/列)


提示:

尽量避免使用连字符、空格或任何其他 SQL 可能会提示的字符,这包括在单词之间使用空格。

即:

INSERT INTO your_table (column 1, column-2) <= will cause/throw an error

你需要使用反引号:

INSERT INTO your_table (`column 1`, `column-2`) <= correct / valid

尽管允许使用空格(但不鼓励),但它们也需要用反引号封装。

关于php - 执行 mysqli_query 时出现 SQL 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26265863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com