UPDATE table SET spessore='$spessore' проблема. Не поможете исправить?

12
P
На сайте с 06.01.2009
Offline
592
1219

Здравствуйте.

есть таблица из которой достаются данные

$result48 = mysql_query("SELECT .., spessore, ...");

while ($fow = mysql_fetch_array($result48, MYSQL_NUM)) {
$spessore = $fow[6];
}

в этой таблице поле spessore имеет varchar и такие данные

10\10 или 10\15 и т.д.

далее эти данные хотим записать в другую таблицу, но проблема - пропадает знак "\" между числами, в итоге бардак.


UPDATE table2 SET spessore='$spessore',

в итоге в table2 в поле spessore записывается 1010 или 1015 и т.д.

Подскажите, пожалуйста, как устранить проблему?

Спасибо

ДП
На сайте с 23.11.2009
Offline
203
#1

Какого типа поле spessore в table2?

Mad_Man
На сайте с 10.11.2008
Offline
162
#2

Очевидно, что стоило бы почитать про экранирование, прежде чем засовывать в SQL бэкслеши. Ещё было бы неплохо узнать, что библиотека mysql и все её вызовы mysql_* устарели.

P
На сайте с 06.01.2009
Offline
592
#3
Mad_Man:
Очевидно, что стоило бы почитать про экранирование, прежде чем засовывать в SQL бэкслеши. Ещё было бы неплохо узнать, что библиотека mysql и все её вызовы mysql_* устарели.

Прошу прощения за неграмотность в php, но я использую его настолько насколько могу, это не моя профессия. Если подскажете, как теперь делать запросы к таблицам, что читать, буду признателен.

---------- Добавлено 22.07.2014 в 20:45 ----------

Дикий пионер:
Какого типа поле spessore в table2?

Тоже varchar

Mad_Man
На сайте с 10.11.2008
Offline
162
#4

<?


namespace rude;

require_once 'rude-config.php';

require_once 'src/etc/rude-autoload.php';


# SELECT example

$q = new query('table');
$q->where('id', 6);
$q->query();

# debug($q->sql());
# debug($q->get_object_list());


# UPDATE example

$q = new uquery('table');
$q->update('string', 'new val');
$q->where('id', 15);
$q->query();

# debug($q->sql());

Для использования не забываем поменять настройки подключения в rude-config.php и в php.ini указать `short_open_tag = On`. Комментарии перед вызовами `debug()` можно убрать, чтобы увидеть собранные SQL запросы и вернувшиеся объекты из базы.

zip rude-database.zip
f0x
На сайте с 20.09.2006
Offline
116
f0x
#5

$spessore = mysqli_real_escape_string($spessore);

UPDATE table2 SET spessore='$spessore',

P
На сайте с 06.01.2009
Offline
592
#6
Mad_Man:
Ещё было бы неплохо узнать, что библиотека mysql и все её вызовы mysql_* устарели.

Спасибо, а какова цель переходить на то что Вы написали выше? Т.е. почему не стоит пользоваться mysql_* ?

Mad_Man
На сайте с 10.11.2008
Offline
162
#7
postavkin:
Спасибо, а какова цель переходить на то что Вы написали выше? Т.е. почему не стоит пользоваться mysql_* ?

Выше - реализация CRUD на mysqli без тупых SQL инъекций. Почему не стоит юзать mysql_* написано в оф. документации, если вы удосужитесь взглянуть на неё.

P
На сайте с 06.01.2009
Offline
592
#8
Mad_Man:
Выше - реализация CRUD на mysqli без тупых SQL инъекций.

Честно говоря так и думал. Обязательно прочитаю документацию.

[umka]
На сайте с 25.05.2008
Offline
456
#9
Mad_Man:
$q = new uquery('table');
$q->update('string', 'new val');
$q->where('id', 15);
$q->query();

Это ж на до ж так извратить SQL-запрос :)

Мне было бы проще уделить ещё одну минуту внимания для фильтрации исходных данных, чем громоздить что-то подобное.

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

INSERT INTO pf_cache SELECT e.id eid, DATE_FORMAT(e.date,'%d.%m.%Y'), DATE_FORMAT(e.date_time,'%d.%m %H:%i'), e.name, e.descr_short, e.img, e.descr, e.guests, IF(eg.person_user_id,1,0), COUNT(pf.user_id), p.name, p.rating, p.address, p.types, co.en, IF(co.ru!='', co.ru, co.en), ci.en, IF(ci.ru!='', ci.ru, ci.en), IF(u.url!='',u.url,u.id) FROM `events` e LEFT JOIN events_guests eg ON (eg.event_id=e.id AND eg.person_user_id=123), places p, events_guests eg2, people_friends pf, countries co, cities ci, users u WHERE e.date_time>NOW() AND eg2.event_id = e.id AND pf.friend_user_id = eg2.person_user_id AND p.user_id=e.place_user_id AND p.city_id=777 AND ci.id=777 AND co.id=7 AND p.country_id=7 AND co.id=7 AND ci.id=p.city_id AND co.id=p.country_id AND ci.id=p.city_id AND u.id=p.user_id AND u.status=1 GROUP BY e.id ORDER BY e.date_time

Лог в помощь!
P
На сайте с 06.01.2009
Offline
592
#10
f0x:
$spessore = mysqli_real_escape_string($spessore);

почему то всё равно из 8\9 получается 89

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий