[英]SQL Error: Insert Query producing error (Column names surrounded with quotes)
在我的 sql 代碼中一個非常簡單的插入命令,最初是用 node js 制作的,為了簡單起見,我將它移到了 php。 然后我將所有變量更改為硬編碼值。 這是代碼和結果:
代碼:
<?php
$db = mysqli_connect("localhost", "****", "****", "****"); // assume this works
if (mysqli_connect_errno()) {
echo mysqli_connect_error();
}
$query = "INSERT INTO `users` ('username', 'email', 'profilePic') VALUES ('awd', 'awd@awd.awd', '".mysqli_real_escape_string($db, "http://localhost:3000/public/files/avatar/2ede50c0-d4b9-11e8-9635-617abdd05393.png")."')";
echo $query."<br>";
if (!mysqli_query($db, $query)) {
echo mysqli_error($db);
}
?>
結果:
INSERT INTO `users` ('username', 'email', 'profilePic') VALUES ('awd', 'awd@awd.awd', 'http://localhost:3000/public/files/avatar/2ede50c0-d4b9-11e8-9635-617abdd05393.png')
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 ''username', 'email', 'profilePic') VALUES ('awd', 'awd@awd.awd', 'http://localho' at line 1
為什么在我使用mysqli_real_escape_string()
后會拋出錯誤? 在 node js 中,我也嘗試使用db.escape()
,但也失敗了。 如何修復錯誤? Php 或 Node Js 答案都被接受,先謝謝你。
解決方案:
列名周圍不應有任何內容,要使 sql 查詢工作,只需刪除列名周圍的單引號即可。
簡單地說,我認為您需要用反引號將列名括起來。
$query = "INSERT INTO `users` (`username`, `email`, `profilePic`)
VALUES ('awd',
'awd@awd.awd',
'".mysqli_real_escape_string($db,
"http://localhost:3000/public/files/avatar/2ede50c0-d4b9-11e8-9635-617abdd05393.png")."')";
替換這個:
$query = "INSERT INTO `users` ('username', 'email', 'profilePic') VALUES ('awd', 'awd@awd.awd', '".mysqli_real_escape_string($db, "http://localhost:3000/public/files/avatar/2ede50c0-d4b9-11e8-9635-617abdd05393.png")."')";
有了這個:
$query = "INSERT INTO `users` (username, email, profilePic) VALUES ('awd', 'awd@awd.awd', '".mysqli_real_escape_string($db, "http://localhost:3000/public/files/avatar/2ede50c0-d4b9-11e8-9635-617abdd05393.png")."')";
列名周圍沒有任何東西,這是一個非常簡單的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.