2013-07-30 3 views
1

Я использую простой код MySQL для вставки данных из формы с идентификатором auto_increment, он отлично работает на локальном хосте, но не на сервере.auto increment id не вставлен

это код, я использую

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

в локальных данных хоста PHPMYADMIN вставляется в таблице, но по данным серверов PhpMyAdmin не вставлен в таблице. В моем localhost я использую XAMPP, тогда как phpmyadmin на сервере IIS. Какую настройку я должен делать в phpmyadmin на сервере, чтобы идентификатор автоматически вставлялся с автоматическим приращением, я знаю, что могу использовать mysql_insert_id() для вставки идентификатора, но в большом количестве файлов я использовал этот тип кода, который я не могу изменить. Я хочу иметь такую ​​же настройку, как XAMPP, которая может легко использовать этот тип кода.

+0

Убедитесь, что ваш столбец DB имеет свойство автоматического прироста в сервере IIS –

+0

Почему бы вам не использовать phpmyadmin, чтобы сделать его auto_increment? –

+0

Что касается тангенциального примечания, то способ использования $ myvar может привести к атаке SQL-инъекции. Я надеюсь, что вы позаботитесь об этом каким-то образом. – Shreeni

ответ

-1

автоматическое приращение вставляет идентификатор себя так, что вам не нужно, чтобы передать его через код

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

или вы можете сделать это

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

, если вы хотите вручную вставить Идентификатор по какой-то причине

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

Вы как вставка '' в идентификатор автоинкремента. просто вставьте другие поля, и 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; 

получит последний идентификатор затем увеличить его до 1 // добавить это значение идентификатора в вставки заявления

или , если у вас есть автоинкремент колонки изменить его

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

до

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

Фактически, подход 'MAX (id)' приведет к ошибкам, потому что после того, как это значение будет определено, другой процесс может добавить новый набор данных именно с этим идентификатором. Он небезопасен в системе с одновременным доступом. – Sven

0

Первый проверьте свою таблицу. Структурная собственность, применяя запрос:

desc mytable (or) show create table mytable.

Проверить, установлено ли свойство auto increment для идентификатора столбца.

Если да, то не нужно передавать идентификатор в запросе на вставку.

Просто написать запрос, как: -

$ SQL = "INSERT INTO MyTable (MYVAR) VALUES ('$ MyVar')";

0

, если до сих пор вы получаете ошибку

первый чек, на сервере в столбце идентификатор должен помеченный как auto_increment.data тип должен быть внутр. , если это нормально, то

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

и пытаются использовать подготовленные заявления, чтобы избежать SQL-инъекции. Благодарю.
надеюсь, что это может пригодиться для вас.