[英]PHP MySQL INSERT statement syntax error
我在使用INSERT語句時遇到問題,並且錯誤僅顯示:
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 '' at line 1
這根本沒有幫助。 到目前為止,我嘗試過但失敗的版本是:
mysql_query("INSET INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')");
[不用說兩個變量在打印時顯示正確的值]我也嘗試過在表名周圍什么都沒有的版本中使用`或',實際上是一百萬個組合,沒有任何用處。 甚至沒有常量或不同的表。 它只是不會插入任何東西。 我已經檢查了特權(我以root用戶身份登錄),並且一切都已就緒。
我已經在具有相同服務器(XAMPP 1.7.7)的兩台不同機器上嘗試了類似的東西,並且它可以工作。 我完全困惑了! 會是什么
感謝您的時間!
首先,只需正確輸入INSERT
。
像這樣使用_GET
確實可以打開SQL INJECTIONS ...
看一看MySQL准備好的語句 。
命名插入數據的列也被認為是一種好習慣 。 以后,您可以插入多余的列並保留應用程序邏輯。
INSERT INTO cos(rowName1, rowName2) VALUES(?, ?)
在?
將准備的語句。
正確:
mysql_query("INSERT INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')");
您是否嘗試過將$ link傳遞給mysql_query
?
喜歡:
mysql_query("INSERT INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')", $link);
編輯:當然,在將任何內容插入數據庫之前,您可能必須采取一些安全措施,也許是mysql_real_escape_string()
甚至是准備好的語句。
你做錯了。 您為什么不逃避這些價值觀? php.net文檔提供了一些良好且安全的工作示例:
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// Perform Query
$result = mysql_query($query);
因此適合您的代碼:
$query = sprintf("INSERT INTO `cos` VALUES (%s, %s);",
mysql_real_escape_string($_GET['prod']),
mysql_real_escape_string($_GET['page']));
$result = mysql_query($query);
請,始終逃避您的價值觀。 並使用INSERT,而不是INSET :)
首先,這是您正在使用INSET
使其與INSERT
一樣正確
$pro = mysql_real_escape_string($_GET['prod']);
$page = mysql_real_escape_string($_GET['page']);
mysql_query("INSERT INTO `cos` (column1, column2)
VALUES ('$pro', '$page')" );
你忘了設置列名...
嘗試這個:
$prod = $_GET['prod'];
$page = $_GET['page'];
mysql_insert("INSERT INTO 'cos' VALUES('$prod','$page)");
這應該做得很好:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.