Jump to content
  • 0

Замена данных вместо добавления строки


slavok47
 Share

Question

Вобщем имеется форма, при занесении данных в БД создается новая строка, задача сделать так чтобы при совпадении (например логина) данные просто изменялись в этой строке где этот логин

подскажите в какую сторону копать, я так понял должно что то быть связанное с update

Link to comment
Share on other sites

25 answers to this question

Recommended Posts

  • 0
В том, что для получения $present нужно сделать ещё один запрос :lol:

Мне чё-то в последне время жутко влом учебники читать.

$present я так понял это значение переменной, и что за запрос нужен для получения этого значения?

Link to comment
Share on other sites

  • 0
Вы нас спрашиваете? Оо

Я конечно понимаю что глупость пишу, но мне не понятно для чего в строке

if ($present) mysql_query("update `table` set `a`='$var' where `ID`=$id")

вообще нужен ($present), поэтому и спрашиваю, кстати попробовал так:

if $result = mysql_query ("UPDATE smersch SET usabb1s='$usabb1', usabblvl1s='$usabblvl1' WHERE logins='$login' ");
else $result = mysql_query ("INSERT INTO smersch (usabb1s,usabblvl1s,logins) VALUE ('$usabb1','$usabblvl1','$login')");

Вот тут тоже где-то глупость, поэтому и прошу помочь разобраться

Кстати что то мне подсказывает что ($present) это запрос SELECT, типа:

$present = mysql_query("SELECT logins FROM smersch WHERE logins = '$login'");

Edited by slavok47
Link to comment
Share on other sites

  • 0
Только не сам запрос, а mysql_num_rows от него

Возможно я в правильном направлении иду, хотя при таком раскладе:

$present = mysql_query("SELECT name FROM test WHERE name = '$name'");
if (mysql_num_rows($present))
$result=mysql_query("UPDATE test SET name WHERE name = '$name'");
else
$result = mysql_query ("INSERT INTO test (name, data) VALUES ('$name', '$data')");

ошибка: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 'WHERE name = '$name'' at line 1

B)

Где я опять глупость сморозил? ;)

Edited by slavok47
Link to comment
Share on other sites

  • 0

Да и апдейт странный, после set name должно идти присваиваемое значение. А почему не заменяет, я не знаю :) Попробуй вывести значение mysql_num_rows на экран и сравни с ожидаемым.

И на всякий случай все имена полей и таблиц заключай в ``, а то вдруг у тебя имя поля совпадёт с зарезервированным словом типа date.

Edited by Int
Link to comment
Share on other sites

  • 0

Все заработало :) Всем спасибо за помощь, в итоге получилось так:

$iffound = mysql_query("SELECT name FROM test WHERE name = '$name'");
if ($row = mysql_num_rows($iffound))
$result = mysql_query("UPDATE test SET name='$name', data='$data' WHERE name = '$name'");
else
$result = mysql_query ("INSERT INTO test (name, data) VALUES ('$name', '$data')");

Хотелось бы провести работу над ошибками:

1) Не понятно откуда была ошибка в WHERE name = '$name'

2) Действительно не доглядел значения в SET

И чего я не понял, дак это какую роль играет в этом сценарии mysql_num_rows, для чго нужно считать поля?\

ну и при выводе echo "$row"; если записи небыло, она добавляется $row=0, если запись была, она обновляется и $row=1.\

Да и по поводу зарезервированых выражений и `` это понятно, но я стараюсь не обзывать такими словами поля, хотя перестраховаться не мешает....

Link to comment
Share on other sites

  • 0

SET name='$name' WHERE name = '$name' - это вот вообще зря, если поле name уже содержит нужные данные, зачем их обновлять?

mysql_num_rows показывает, есть ли уже данная запись в базе. В четырёх строчках заблудился? :)

Link to comment
Share on other sites

  • 0
SET name='$name' WHERE name = '$name' - это вот вообще зря, если поле name уже содержит нужные данные, зачем их обновлять?

mysql_num_rows показывает, есть ли уже данная запись в базе. В четырёх строчках заблудился? :(

действительно name обновлять не зачем :) , зато пока блуждал в этих строках хоть понимать начал :) ,

Кстати, а возможно ли использовать этот же $row = mysql_num_rows($iffound) для, например:

if ($row > 40)
echo "какое то сообщение";
else
$result = mysql_query ("INSERT INTO...........

,

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

Link to comment
Share on other sites

  • 0

Int спасибо принцип понятен, не понятно как при таком варианте:

$iffound = mysql_query("SELECT name FROM test WHERE name = '$name'");
if ($row = mysql_num_rows($iffound))
$result = mysql_query("UPDATE test SET data='$data' WHERE name = '$name'");
else
$result = mysql_query ("INSERT INTO test (name, data) VALUES ('$name', '$data')");

$row будет = 40, тут либо 0, либо 1

ладно, если же SELECT представить как

$iffound = mysql_query("SELECT * FROM test ");

то данные не обновляются и не добавляются, хотя $row уже считает количество всех записей

Что я упустил?

Edited by slavok47
Link to comment
Share on other sites

  • 0

Не могу сказать почему не обновляются.

А 40 будет в том случае, если таблицу заполняли ещё до того, как начал работать этот скрипт :)

Кстати, результат выполнения insert и update не обязательно чему-то присваивать, можно делать просто mysql_query();

Link to comment
Share on other sites

  • 0
Кстати, результат выполнения insert и update не обязательно чему-то присваивать, можно делать просто mysql_query();

это для

if ($result == 'true')
{
echo "Информация в базу занесена успешно!";
}
else
{
echo "Информация в базу не занесена";
}

Только для UPDATE еще не сделал :)

Может есть другой способ ограничить записть в БД? Тоесть например записать можно не больше 40 записей

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy