Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Функция UPDATE [3]
Форумы портала PHP.SU » PHP » Программирование на PHP » Функция UPDATE

Страниц (4): « 1 2 [3] 4 »
 

31. JustUserR - 01 Марта, 2010 - 11:47:00 - перейти к сообщению
master_igor пишет:
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 ''121212' at line 1
А почему с одной стороны двойная а с другой одиночная кавычка - а если это не дословные данные то сделайте mysql_real_escape_string - и еще сами mysql-поля заключаются в обратные кавычки `` - тоже имейте это в виду если они содержат не только латинские буквы и цифры
32. biperch - 01 Марта, 2010 - 22:02:04 - перейти к сообщению
biperch пишет:
WHERE id='".$_POST['id'].'"
master_igor пишет:
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 ''121212' at line 1


в нижней строке была опечатка '-" исправил, ее то и мотюкает
l l
V
PHP:
скопировать код в буфер обмена
  1. $result =  mysql_query("UPDATE comps SET inventary='$inventary', parameters='$parameters', user='$user'  WHERE id=".(int)$_POST['id'], $db)or die(mysql_error());
33. JustUserR - 01 Марта, 2010 - 22:14:10 - перейти к сообщению
biperch Я бы сделал
PHP:
скопировать код в буфер обмена
  1. $result =  mysql_query("UPDATE comps SET inventary='$inventary', parameters='$parameters', user='$user'  WHERE id='".(int)$_POST['id']."'", $db)or die(mysql_error());
Несмотря на то что есть преобразование в число и эксплойт/инекцию так просто не провести - все равно значение может преобразоваться в NaN что может привести к ошибке в сравнии WHERE
34. biperch - 01 Марта, 2010 - 23:04:38 - перейти к сообщению
я тестил
$s="lfkdflkd943058945";
$n=(int)$s;

равно ноль, не null а 0;
на $s=""; не пробовал
35. JustUserR - 02 Марта, 2010 - 15:23:26 - перейти к сообщению
biperch пишет:
Равно ноль, не null а 0; на $s=""; не пробовал
Интернесно бы еще попробовать $s="NaN" или $s="infinity" к примеру Улыбка
36. biperch - 02 Марта, 2010 - 19:52:07 - перейти к сообщению
JustUserR пишет:
Интернесно бы еще попробовать $s="NaN" или $s="infinity" к примеру Улыбка

попробуй
37. master_igor - 03 Марта, 2010 - 04:52:15 - перейти к сообщению
biperch пишет:
JustUserR пишет:
Интернесно бы еще попробовать $s="NaN" или $s="infinity" к примеру Улыбка

попробуй


Улыбка УРА нужный результат достигнут. biperch и JystUseR спасибо вам большое за помощь )))
38. biperch - 03 Марта, 2010 - 08:29:26 - перейти к сообщению
семь дней велись разборки
39. JustUserR - 04 Марта, 2010 - 09:33:42 - перейти к сообщению
master_igor пишет:
УРА нужный результат достигнут. biperch и JystUseR спасибо вам большое за помощь )))
Пожалуйста! Мы рады что смогли помочь Заодно еще раз поговорили о неявных и явных преобразованиях данных Улыбка
40. buykz - 05 Марта, 2010 - 07:54:47 - перейти к сообщению
посмотрите пожалуйста продолжение темы
http://forum.php.su/messenger.ph...p;msg=1267768431
(не та ссылка, извините)
41. master_igor - 05 Марта, 2010 - 07:59:49 - перейти к сообщению
buykz пишет:
посмотрите пожалуйста продолжение темы
http://forum.php.su/messenger.php?action=outread&msg=1267768431


Уточните ссълку. Я проходя по это ссълке нечего не вижу. Говорят что нет страничку такой
42. buykz - 05 Марта, 2010 - 08:03:30 - перейти к сообщению
в продолжение темы:

не вставляются данные в таблицы баз данных.
таблицы: staff(sid,no,fio,tel и т.д.)
ed(eid,ed,text,sided) - где sided совпадает с staff.sid
exp(expid,text,sidexp)

Имеется резюме(в нашем случае главная форма):

PHP:
скопировать код в буфер обмена
<? if (isset($_GET['ed'])) {$ed=$_GET['ed'];}
$result = mysql_query ("SELECT * FROM staff WHERE sid='$cat'",$db); ?>


которое состоит из личных данных, опыта, образования и т.д.
опыт:
PHP:
скопировать код в буфер обмена
<? $exp = mysql_query ("SELECT * FROM exp WHERE sidexp='$cat'",$db);
$ex = mysql_fetch_array ($exp);
echo "$ex[text]";?>

образование:
PHP:
скопировать код в буфер обмена
<? $ed = mysql_query ("SELECT * FROM ed WHERE sided='$cat'",$db);
$e = mysql_fetch_array ($ed);
$ed1=mysql_query ("SELECT * FROM _ed_type WHERE edtid='$e[ed]'",$db);
$e1 = mysql_fetch_array ($ed1);
echo "$e1[ed_type]";echo " <p>$e[text] </p>"; ?>


Подчеркнутое, это ссылки, на окрытия маленьких окон, которые открываются скриптом.
само маленькое окошко, staff_edit2.php

PHP:
скопировать код в буфер обмена
<? $result = mysql_query("SELECT * FROM exp WHERE sidexp=$sid");
$myrow = mysql_fetch_array($result);
print <<<HERE
<div style=" text-align:left; padding:10px; line-height:22px;";>
<form name="form1" method="post" action="staff_edit2_action.php" class="form_new">
<label><textarea name="text" id="text" style="width:500px; height:150px">$myrow[text]</textarea></label>
<input name="sided" type="hidden" value="$myrow[sided]">
<label><input type="submit" name="Submit" id="Submit" value="Сохранить изменения"></label></p>
</form></div>
HERE;
?>


ну и staff_edit2_action.php
<? $x = mysql_query ("SELECT sid FROM staff WHERE sid=$sid");
if (isset($text) )
{ $exp = mysql_query ("UPDATE exp SET text='$text' WHERE sidexp='$sid'");
if ($exp == 'true') {echo "Сохранено";} else {echo "Не сохранено!";}
} else {echo "<p>не вся инфо вбита</p>";} ?>

вопрос: в новом маленьком окошке после сохранения, пишет сохранено, но в самой базе не происходит не каких изменений, т.е. редактирую - сохраняю - обновляю резюме - все тоже что было до... хотя личные данные вставились без проблем
ps. я новичок, извените за "локаничность"
43. Viper - 05 Марта, 2010 - 09:18:39 - перейти к сообщению
buykz лаконично!
$text откуда у вас берется? я не вижу где вы её получаете!
кусок ($exp == 'true') вообще бред!
с чего вы взяли что булево значение является строкой?!

в staff_edit2_action.php я не вижу чтобы вы получали какие-то переменные. Если у вас $text переменная из $_POST, то помимо isset проверяйте что переменная не пустая. т.е.


PS! Оформляйте коды в соответствующие теги!!!
44. buykz - 05 Марта, 2010 - 09:28:59 - перейти к сообщению
помоему здесь вопрос присоединения
есть резюме, которое состоит из таблиц staff и exp(опыт) и ed(образование). данные вставил. Теперь надо редактировать данные. В staff понятно, она главная в резюме:
if (isset($no) && isset($fio) && isset($tel))
{ $result = mysql_query ("UPDATE staff SET no='$no', fio='$fio', tel='$tel' WHERE sid='$sid'");
if ($result == 'true') {echo "Сохранено";} else {echo "Не сохранено!";}
} else {echo "<p>не вся инфо вбита</p>";}
sid - id staff в staff
а вот как быть с exp и ed не пойму.
if (isset($text) ) { $exp = mysql_query ("UPDATE exp SET text='$text' WHERE sidexp='$sid'");
if ($exp == 'true') {echo "Сохранено";} else {echo "Не сохранено!";}
} else {echo "<p>не вся инфо вбита</p>";}
sidexp - схожие id staff в exp
если $sid - если поставить здесь номер в ручную, то получается то что хочу
(Добавление)
"лаконично" в кавычках

это от Евгения Попова, но дело в том что оно работает (правда я не совсем понимаю, это означает, если сработал запрос mysql_query, я так понимаю)
с чего вы взяли что булево значение является строкой?! - не совсем понял, всмысле, а может массивом
PHP:
скопировать код в буфер обмена
  1. if (isset($text) && !empty($text)) { ...

но это поле может быть и пустым, а переменная из:
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['text']))  {$text = $_POST['text'];}

самое главное, если в
PHP:
скопировать код в буфер обмена
  1. UPDATE exp SET text='$text' WHERE sidexp='$sid'

сменить '$sid' на sid staff вручную например написать число 12982(это id из таблицы staff, с которым к примеру мы щас работаем) то все сробатывает. Не пойму какую переменную сюда ставить
45. buykz - 05 Марта, 2010 - 18:09:31 - перейти к сообщению
народ, извините, что-то я запутался в какой-то момент... разобрался, спасибо

 

Powered by ExBB FM 1.0 RC1