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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: UPDATE не обновляет ничего в таблице

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
denser
Отправлено: 01 Февраля, 2017 - 22:21:09
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




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

Помогите разобраться - надо занести данные в таблицу. Использую UPDATE, но в базе нет изменений, хотя после выполнения скрипта ошибок не сообщается.
Вот код:

$link = mysqli_connect($host, $user, $password, $database)
or die("Ошибка " . mysqli_error($link));

mysqli_query($link,"SET NAMES utf8");

// читаю первую таблицу
$query ="SELECT * FROM old_product_tag";
$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));

//перебираю массив и присваиваю во второй таблице в колонке tag значение $v[tag] где product_id

foreach ($result as $v) {
$query2 ='UPDATE old_product_description SET tag="$v[tag]" WHERE product_id="$v[product_id]"';
$result2 = mysqli_query($link, $query2) or die("Ошибка " . mysqli_error($link));
}

- никаких ошибок не сообщает, но и в базе нет изменений,
что я делаю не так?
Значения $v[tag] могут быть и цифры и фразы на кирилице. Тип в колонке tag - текст.

(Отредактировано автором: 01 Февраля, 2017 - 22:25:58)

 
 Top
Sail
Отправлено: 02 Февраля, 2017 - 09:05:35
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




denser, для начала в качестве отладочной информации выведите текст сформированного запроса и значения переменных $v[product_id] и $v[tag].
Дальше - наверняка придёт озарение...
 
 Top
ytrewq123
Отправлено: 02 Февраля, 2017 - 14:53:17
Post Id


Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Я только учуся.
Но правильно пишет Sail.
Посмотрите что приходит в $result и какие значения в $v[product_id] и $v[tag].
Если всё норма, тогда будет ясно что проблема именно в UPDATE.
И а разве тут не надо так $v[‘product_id’] и $v[‘tag’].
Пока так…
 
 Top
denser
Отправлено: 02 Февраля, 2017 - 15:21:43
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Sail пишет:
...значения переменных $v[product_id] и $v[tag].
Дальше - наверняка придёт озарение...

- значения нормальные. Я их в echo вывожу - то есть из базы считываются ИД продуктов и теги. В тегах записаны цифры и фразу на кирилице.
Если в скрипте не указывать mysqli_query($link,"SET NAMES utf8"); то кирилические фразы выводятся на экран вопросиками.

Озарения не пришло Улыбка - просто - с таблицы считал и вывел на экран.
Также я считал из таблицы, в которую надо записать теги - product_id - обе таблицы читаются. А UPDATE не берет.
(Добавление)
ytrewq123 пишет:
... а разве тут не надо так $v[‘product_id’] и $v[‘tag’].


- если я делаю запрос так:

$query2 ='UPDATE old_product_description SET tag="$v['tag']" WHERE product_id="$v['product_id']"';
$result2 = mysqli_query($link, $query2) or die("Ошибка " . mysqli_error($link));

то ошибка: Parse error: syntax error, unexpected 'tag' (T_STRING)

Если запрос такой:
$query2 ="UPDATE old_product_description SET tag=$v['tag'] WHERE product_id=$v['product_id']";

то ошибка: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)


- таким образом, я не понимаю какой синтаксис в моем случае...
(Добавление)
- гы. озарение , таки пришло в таком виде:
$vpid = $v[product_id];
$vtg = $v[tag];

$query2 ="UPDATE old_product_description SET tag='$vtg' WHERE product_id=$vpid";
$result2 = mysqli_query($link, $query2) or die("Ошибка " . mysqli_error($link));


- однако это не дало ответ как правильно писать синтаксис в данном запросе Улыбка
 
 Top
Sail
Отправлено: 02 Февраля, 2017 - 16:03:18
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




denser, вывели-бы сформированный текст запроса ($query2) - увидели бы сразу, что полученные значения переменных отличаются от ожидаемых.
А насчет синтаксиса: строки в php
Спойлер (Отобразить)
 
 Top
ytrewq123
Отправлено: 02 Февраля, 2017 - 19:26:59
Post Id


Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Вообще насколько знаю надо так.
$query2 ="UPDATE old_product_description SET tag={$v['tag'] }WHERE product_id={$v['product_id']}";
Если ещё нет. Попробуйте так.
$query2 ="UPDATE old_product_description SET tag=’{$v['tag'] }’WHERE product_id=’{$v['product_id']}’";
Потому как при двойных. Надо экранировать с помощью {}.
Но и при подставлении значения в запросе нужны одинарные.
Попробуйте.

(Отредактировано автором: 02 Февраля, 2017 - 19:30:56)

 
 Top
denser
Отправлено: 02 Февраля, 2017 - 20:05:46
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2017  


Помог: 0 раз(а)




Sail пишет:

- спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB