2009-05-03 4 views
1

Я пытаюсь вызвать обновление строки из php в базу данных mysql. Он выходит из строя, но когда я пытаюсь вызвать вставку, новая строка формируется точно так же, как она работает.Код обновления PHP/MySQL

$result = mysql_query("INSERT INTO auth (username, password, studycode, description, server) VALUES ('$username', '$password', '$studycode', '$description', '$server')"); 

, но этот код не

$result = mysql_query("UPDATE auth SET username='$username', password='$password', studycode='$studycode', description='$description', server='$server' WHERE index='$id' LIMIT 1;"); 

индекс первого столбца и его ключ/идентификатор для таблицы.

Редактировать: Хорошо, поэтому я просто зашел в mysql admin и попробовал точную команду, которую мой код отправил бы для отслеживания ошибки.

UPDATE auth SET username='username', password='password', studycode='ab9102y', description='test change', server='server2' WHERE index='5' LIMIT 1; 

дает мне ошибку

#1064 - 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 'index='5' LIMIT 1' at line 1 
+0

«Сбой» с какой ошибкой? Вы уверены, что есть запись с идентификатором, который вы проходите? – RichieHindle

+0

Какая ошибка вы получаете? Измените код на это: $ result = mysql_query (...) или die ("Ошибка:" .mysql_error()); –

ответ

7

Возможно зарезервированное ключевое слово с индексом. Попробуйте:

$result = mysql_query("UPDATE auth SET username='$username', password='$password', studycode='$studycode', description='$description', server='$server' WHERE `index` ='$id'"); 
+0

Это сделало это. Спасибо чувак! –

+3

Вы должны действительно дезинфицировать свой вход здесь, чтобы предотвратить инъекцию, либо с помощью подготовленных инструкций, либо избегая значений. – barfoon

+0

Это проще всего, если вы всегда ставите по всем полям стандартную практику, если честно. Там тонна зарезервированных слов, а некоторые действительно хорошие имена полей ('desc' довольно распространен). –

-1

У вас есть "UPDATE atuh" вместо "UPDATE" AUTH. Ошибка орфографии здесь или в вашем коде?

РЕДАКТИРОВАТЬ: Попробуйте удалить котировки вокруг вашего индекса = '$ id', а также вы хотите удалить полуточку из ваших запросов в PHP.

+0

только эта часть, которую я скопировал. –

-2

попробовать это

$ результат = mysql_query ("UPDATE аутентификации SET имя пользователя = '$ имя пользователя', пароль = '$ пароль', studycode = '$ studycode', описание = '$ Описание', сервер = '$ server' WHERE index = '$ id' ");

1

Я считаю, что это потому, что слово index это зарезервированное слово в MySQL. Там вам нужно изменить свое положение:

WHERE `index` = '$id' 

Обратите внимание на тики вокруг индекса.

1

Чтобы избежать такого рода проблем, которые я обычно называю мои таблицы, как это: (напр таблицы пользователей.)

> CREATE TABLE usr_user (
>   usr_id INT, 
>   usr_name VARCHAR(100), 
>   usr_email VARCHAR(100)); 

На стороне записки: узнать о подготовленных заявлениях; Я бы очень боялся использовать код SQL, который у вас там есть.