2012-01-09 55 views
1

我在與一個INSERT語句的問題,錯誤只是說:PHP MySQL的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),它的工作原理。我完全困惑!它會是什麼?

謝謝你的時間!

回答

4

首先,只需正確輸入INSERT即可。

使用_GET像真的可能讓你到SQL注入......

做看一看到MySQL prepared statements

它也被認爲是好的做法來命名您要插入數據的列。這允許你在後面插入額外的列並保留應用程序邏輯。

INSERT INTO cos(rowName1, rowName2) VALUES(?, ?) 

其中?將準備報表。

+2

+ +1的提示 – fyr 2012-01-09 09:49:19

2

正確:

mysql_query("INSERT INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')"); 

你試過傳遞$鏈接mysql_query

像:

mysql_query("INSERT INTO `cos` VALUES ('".$_GET['prod']."','".$_GET['page']."')", $link); 

編輯: 當然,你必須採取任何東西插入到數據庫中,也許mysql_real_escape_string()甚至準備語句之前的一些安全措施。

+1

你應該指出的是,一個人永遠也不會直接在SQL語句中使用用戶定義的參數。 – fyr 2012-01-09 09:48:15

+0

我簡直不敢相信我這個笨蛋。 – FloIancu 2012-01-09 09:49:04

+1

@FloIancu如果解決了您的問題,請單擊我帖子左側數字旁邊的複選標記。 – Paul 2012-01-09 09:51:17

0

你做錯了。你爲什麼不逃避價值? 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 :)

0

首先這是您正在使用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')"); 

你忘了設置列名...

0

試試這個:

$prod = $_GET['prod']; 
$page = $_GET['page']; 
mysql_insert("INSERT INTO 'cos' VALUES('$prod','$page)"); 

這應該很好地做到這一點:)