簡體   English   中英

NEWID function 導致 MYSQL 中的准備好的語句出錯

[英]NEWID function causing error for prepared statement in MYSQL

我正在嘗試創建一個忘記密碼的系統,因此我正在使用NEWID() function 創建一個隨機代碼以發送到用戶的 email。 我正在使用准備好的語句來防止 SQL 注入,但這仍然不起作用:

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

我在第二行收到警告,第一個參數不能是 boolean。 (因此,SQL 代碼中存在語法錯誤)。 我知道NEWID() function 是問題所在,因為刪除它可以修復警告。 NEWID()在准備好的語句中不起作用嗎? 如果是這樣,我應該如何 go 關於這樣做? 此外,我還需要運行SELECT語句以獲取NEWID() function 返回的值。 我對這一切都錯了嗎?

NEWID()是 SQL 服務器 function,在 MySQL 中不存在。 等價的將是UUID()

$sql = mysqli_prepare($conn, "INSERT INTO verifyEmail (username, code) VALUES (?, UUID())");
mysqli_stmt_bind_param($sql, "s", $user);
mysqli_stmt_execute($sql);

如文檔中所述, UUID()在 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 中為您提供五個十六進制數字的 utf8 字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM