2013-07-30 117 views
1

我使用簡單的MySQL代碼從auto_increment id的表單插入數據,它在本地主機上正常工作,但在服務器上無法正常工作。自動增量ID未插入

這是我使用

$myvar=$_POST['var']; 
//Insert data into mysql table 
$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')"; 

代碼在本地主機的phpmyadmin數據插入表中,但在服務器上的phpmyadmin數據表中沒有插入。在我的本地主機上,我使用的是XAMPP,而在IIS服務器上使用phpmyadmin。 我應該在服務器上的phpmyadmin做什麼設置,以便id自動插入自動增量,我知道我可以使用mysql_insert_id()來插入id,但在很多文件中我使用了這種類型的代碼,我不能改變。我需要與XAMPP相同的設置,可以輕鬆使用此類代碼。

+0

確保您的數據庫列在IIS服務器中具有自動遞增屬性 –

+0

爲什麼不使用phpmyadmin使其成爲auto_increment? –

+0

請注意,使用$ myvar的方式可能會導致SQL注入攻擊。我希望你正在以某種方式照顧.. – Shreeni

回答

-1

自動增量插入ID本身,所以你不需要通過代碼

$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')"; 

通過它也可以做到這一點

$sql="INSERT INTO mytable(id,myvar) VALUES (NULL,'$myvar')"; 

如果你想要手動插入ID爲某種原因

$sql="INSERT INTO mytable(id,myvar) VALUES (10,'$myvar')"; 
6

你在插入''到自動增量ID。只需插入其他字段並且MySQL處理自動增量列。

$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')"; 

應該

$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')"; 
+1

如果值不能被忽略,它不應該是一個空字符串,而是NULL。 – Sven

0

如果你想在最後的所有在表中的行,那麼這是最後其中MAX(id)是正確的答案的時候了! :) 有點。

SELECT fields FROM mytable BY id DESC LIMIT 1; 

將獲得最後的ID則遞增到1,如果你有一個自動增量列其更改爲

$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')"; 
//這個值在插入語句添加到ID

$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')"; 
+0

實際上'MAX(id)'方法會導致錯誤,因爲在確定了這個值之後,不同的進程可能會添加一個新的數據集。在具有併發訪問權限的系統中這是不安全的。 – Sven

0

第一通過應用查詢檢查您的表結構屬性:

desc mytable(或)show create table mytable。

檢查自動增量屬性是否設置爲列ID。

如果是,則表示不需要在插入查詢中傳遞id。

只需編寫一個查詢爲: -

$ SQL = 「INSERT INTO MYTABLE(MYVAR)VALUES( '$ MYVAR')」;

0

如果還是你所得到的錯誤

第一張支票,在你的id列必須標記爲auto_increment.data類型應該是int服務器。 如果是OK,然後

insert into mytable(myvar) values('test'); 

,並嘗試使用準備好的語句,以避免SQL注入。謝謝。
希望這可能會對你有用。