NEWID 函数导致 MYSQL 中准备好的语句出错

我正在尝试创建一个忘记密码系统,因此我正在使用该NEWID()功能创建一个随机代码以发送到用户的电子邮件。我正在使用准备好的语句来防止 SQL 注入,但这仍然不起作用:


$sql = mysqli_prepare($conn, "INSERT INTO verifyEmail (username, code) VALUES (?, NEWID())");

mysqli_stmt_bind_param($sql, "s", $user);

mysqli_stmt_execute($sql);

我在第二行收到警告,第一个参数不能是布尔值。(因此,SQL 代码中存在语法错误)。我知道NEWID()函数是问题所在,因为删除它可以修复警告。在准备好的语句中不起作用NEWID()?如果是这样,我应该怎么做呢?此外,我还需要运行一条SELECT语句来获取NEWID()函数返回的值。我这样做是不是错了?


POPMUISE
浏览 230回答 1
1回答

侃侃无极

NEWID()是一个 SQL Server 函数,在 MySQL 中不存在。等价于UUID():$sql = mysqli_prepare($conn, "INSERT INTO verifyEmail (username, code) VALUES (?, UUID())");mysqli_stmt_bind_param($sql, "s", $user);mysqli_stmt_execute($sql);如文档中所述,在 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 中为UUID()您提供了一个由五个十六进制数字组成的 utf8 字符串。
打开App,查看更多内容
随时随地看视频慕课网APP