[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Update старыми+новыми данными
mityaj
Нужно, чтобы один запрос изъял данные из ячейки, а другой запрос обновил ячейку этими данными + теми, что введены в форме.
$sql="SELECT data FROM cards WHERE card_number='".$_POST['card_number']."'";
$query=mysql_query($sql);
$res=mysql_fetch_array($query);
$d=$res['data'];


$sql="UPDATE cards SET data=$d+'".$_POST['card_number']."' WHERE card_number='".$_POST['card_number']."'";
$query=mysql_query($sql);


Переменная $d есть, думаю ошибка в суммировании переменных.



Спустя 4 минуты, 5 секунд (28.04.2012 - 10:07) Kuliev написал(а):
mityaj
Чтото я ничего не понял из поставленной задачи blink.gif

Спустя 18 минут, 48 секунд (28.04.2012 - 10:26) mityaj написал(а):
Есть форма - id, data
Нужно чтобы при каждом новом запросе к data добавлялось новое значение.
так понятно?

Спустя 21 минута, 20 секунд (28.04.2012 - 10:47) Игорь_Vasinsky написал(а):
UPDATE `table` SET `cell` = `cell` + anything WHERE `id` = id

Спустя 3 минуты, 28 секунд (28.04.2012 - 10:50) mityaj написал(а):
так не получается. в чем может быть проблема?

Спустя 4 дня, 23 часа, 17 минут, 47 секунд (3.05.2012 - 10:08) mityaj написал(а):
вот такой запрос без ошибок, но почему то дает 0
echo $_POST['data'] дает нормальный результат, а вот когда именно в sql сумма дает 0.

$sql="UPDATE `cards` SET `data`='".$d."'+'".$_POST['data']."' WHERE `card_number`='".$_POST['card_number']."'";

Спустя 7 минут, 53 секунды (3.05.2012 - 10:16) sergeiss написал(а):
mityaj, у тебя тут целый "букет" проблем:

1. Выведи подготовленный запрос. Посмотри на него, подумай... Можешь даже сюда запостить.
Впрочем, я тебе и так скажу: у тебя идет сложение (оператором "плюс") двух символьных переменных (!!!), которые записываются, судя по всему, в колонку целого типа. Ничего удивительного, что там ноль получается.
2. Нет защиты от SQL-инъекции, ты напрямую вставляешь ПОСТ-данные в запрос. Это целые ворота для злоумышленника.
3. Тебе уже написали ранее, как сделать один АПДЕЙТ, без СЕЛЕКТа (Игорь_Vasinsky написал). А ты упорно "гнёшь свою линию". Так зачем ты спрашиваешь, если не слушаешь умные советы?

Спустя 23 секунды (3.05.2012 - 10:16) inpost написал(а):
mityaj
Тебе же код дали выше. Что не получается? Ошибка через mysql_error() ? Так покажи запрос, который дал тебе Игорёк и как ты у себя его записал! И код ошибки.

Спустя 19 минут, 30 секунд (3.05.2012 - 10:36) Игорь_Vasinsky написал(а):
Цитата
вот такой запрос без ошибок, но почему то дает 0

Цитата
$sql="UPDATE `cards` SET `data`='".$d."'+'".$_POST['data']."' WHERE `card_number`='".$_POST['card_number']."'";


в таком виде запрос и не должен ничё выводить, а вот если его в mysql_query() сунуть - то если условие соблюдено - то что то должно произойти.

Спустя 19 минут, 28 секунд (3.05.2012 - 10:55) mityaj написал(а):
Цитата (sergeiss @ 3.05.2012 - 08:16)
mityaj, у тебя тут целый "букет" проблем:

1. Выведи подготовленный запрос. Посмотри на него, подумай... Можешь даже сюда запостить.
Впрочем, я тебе и так скажу: у тебя идет сложение (оператором "плюс") двух символьных переменных (!!!), которые записываются, судя по всему, в колонку целого типа. Ничего удивительного, что там ноль получается.
2. Нет защиты от SQL-инъекции, ты напрямую вставляешь ПОСТ-данные в запрос. Это целые ворота для злоумышленника.
3. Тебе уже написали ранее, как сделать один АПДЕЙТ, без СЕЛЕКТа (Игорь_Vasinsky написал). А ты упорно "гнёшь свою линию". Так зачем ты спрашиваешь, если не слушаешь умные советы?

пока без инъекций давайте я разберусь :D


$sql="UPDATE `cards` SET `data`=`data`+'".$_POST['data']."' WHERE `card_number`='".$_POST['card_number']."'";



возвращает 0

$sql="UPDATE `cards` SET `data`='".$_POST['data']."' WHERE `card_number`='".$_POST['card_number']."'";


возварщает то, что ввожу

ОШИБОК НЕТУ. может в базе данных проблема?

Спустя 6 часов, 32 минуты, 43 секунды (3.05.2012 - 17:28) sergeiss написал(а):
mityaj!!! "Для тех, кто в танке": выполни команду
echo $sql.'<br>';

и посмотри, что там у тебя. С какого ПЕРЕПУГА ты в кавычки заключаешь целое число? Я тебе об этом сказал уже, но, похоже, читать тебя не научили пока. Только писать.

Спустя 1 час, 18 минут, 39 секунд (3.05.2012 - 18:47) inpost написал(а):
mysql_query("
UPDATE `cards` SET
`data`=`data`+ "
.(int)$_POST['data']."
WHERE `card_number`="
.(int)$_POST['card_number']."
"
) or die(mysql_error());

Спустя 13 часов, 39 минут, 47 секунд (4.05.2012 - 08:26) mityaj написал(а):
у меня не числа должны быть,а буквы.
данные - это varchar.
нужно, чтобы предыдущее значение склеивалось с новым и забивалось в таблицу.

Спустя 4 минуты, 34 секунды (4.05.2012 - 08:31) mityaj написал(а):
я уже сам разобрался. надо было наверное уточнить, что у меня не цифры. в общем вот так получается отлично!
if (isset($_POST['card_number'])) {$card_number = $_POST['card_number']; if ($card_number == '') {unset($card_number);}}
if (isset($_POST['data'])) {$data = $_POST['data']; if ($data == '') {unset($data);}}

$sql="SELECT * FROM cards WHERE card_number='".$_POST['card_number']."'";
$query=mysql_query($sql);
$res=mysql_fetch_array($query);
$d=$res['data'];
$g=$d.'.'.$data;

$sql="UPDATE `cards` SET `data`='".$g."' WHERE `card_number`='".$_POST['card_number']."'";
//$sql="UPDATE `cards` SET `data`=`data`+'".$_POST['data']."' WHERE `card_number`='".$_POST['card_number']."'";


if (isset($card_number) && isset($data))
{

mysql_query($sql, $con);
echo '<script type="text/javascript">
window.alert("Запись мед карты добавлена")
</script>'
;


}
else
{
echo '<script type="text/javascript">
window.alert("Не все регистрационные данные были введены")
</script>'
;
}


Спустя 2 часа, 55 минут, 5 секунд (4.05.2012 - 11:26) sergeiss написал(а):
Ежели у тебя там строки, то тогда вместо

Цитата (mityaj @ 3.05.2012 - 12:55)
$sql="UPDATE `cards` SET `data`=`data`+'".$_POST['data']."' WHERE `card_number`='".$_POST['card_number']."'";


вот так попробуй:
Цитата (mityaj @ 3.05.2012 - 12:55)
$sql="UPDATE `cards` SET `data`=CONCAT(`data`, '".$_POST['data']."') WHERE `card_number`='".$_POST['card_number']."'";


Чем меньше ты делаешь обработки в ПХП, тем лучше.

Спустя 2 часа, 6 минут, 22 секунды (4.05.2012 - 13:33) inpost написал(а):
Ты хотел в начале при помощи + склеить?
$d+'".$_POST['card_number']."'

Вообще-то склеивается при помощи конкатенации строк, 2 переменных, между ними необходимо ставить точку!!!
$d.$_POST['card_number']

Спустя 12 минут (4.05.2012 - 13:45) sergeiss написал(а):
inpost - он внутри Мускуля пытался склеить "плюсом", а не вы ПЫХе wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.