Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2015, 17:22   #1
Karyuudo
Пользователь
 
Регистрация: 17.02.2008
Сообщений: 53
По умолчанию Почему не работает простейший запрос к БД?

Есть запрос
Код:
UPDATE test_content SET metadesc = 'описание'
который работает в phpmyadmin - все ок.

Задача сделать так, чтобы запрос срабатывал через php

Погуглив, как вообще работать с БД в пхп написал следующее:

Код:
<?php
	mysql_connect("localhost", "root", "") or die (mysql_error ());
	mysql_select_db("test") or die(mysql_error());
	$strSQL = "UPDATE test_content SET metadesc = 'описание'";
	$rs = mysql_query($strSQL);
	mysql_close();
	?>
почему не работает? всмысле ничего не происходит
Karyuudo вне форума Ответить с цитированием
Старый 10.09.2015, 17:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
всмысле ничего не происходит
А чего ты ожидал? UPDATE же не возвращает таблицу. Он может быть вернет тебе число - сколько записей им обработано. Вот его ты и выводи на страницу
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.09.2015, 17:50   #3
Karyuudo
Пользователь
 
Регистрация: 17.02.2008
Сообщений: 53
По умолчанию

вопрос удалось самостоятельно решить.
когда случайно обнаружил, что вдруг заработало, при этом ничего не делал..
в ходе тестов выявил, что проблема с русским языком.
перевел файл в utf-8 без BOM
и все заработало

а ожидал увидеть изменения в БД
Karyuudo вне форума Ответить с цитированием
Старый 15.09.2015, 17:14   #4
Karyuudo
Пользователь
 
Регистрация: 17.02.2008
Сообщений: 53
По умолчанию

Такой вот вопрос еще.
нужно выполнить много однотипных запросов. аналог preg_match в sql не нашел, потому придумал при помощи цикла нагенирировать всяких запросов и потом сделать общий запрос

Но столкнулся со следующим:
Следующий код все работает - выводит на экран сообщение + меняет в базе "фото" на "тест"
Цитата:
UPDATE test_content set `introtext` = REPLACE (`introtext`, 'foto', 'test') where `id`=7;1
Код:
<?php
	mysql_connect("localhost", "root", "") or die (mysql_error ());
	mysql_select_db("test") or die(mysql_error());
	$strSQL = "UPDATE test_content set `introtext` = REPLACE (`introtext`, 'foto', 'test') where `id`=7;";
	echo $strSQL;
	$rs = mysql_query($strSQL);
	echo $rs;
	mysql_close();
	?>

но надо сделать множество запросов, типа фото1 на тест1, фото2, тест2, фото3, тест3... ну и так десятками в разных вариациях.
сделал - а не работает, начал смотреть и даже такой код не работает:
Код:
<?php
	mysql_connect("localhost", "root", "") or die (mysql_error ());
	mysql_select_db("test") or die(mysql_error());
	$strSQL = "UPDATE test_content set `introtext` = REPLACE (`introtext`, 'foto', 'test') where `id`=7;
                   UPDATE test_content set `introtext` = REPLACE (`introtext`, 'foto', 'test') where `id`=7;";
	echo $strSQL;
	$rs = mysql_query($strSQL);
	echo $rs;
	mysql_close();
	?>
выдает
Цитата:
UPDATE test_content set `introtext` = REPLACE (`introtext`, 'foto', 'test') where `id`=7; UPDATE test_content set `introtext` = REPLACE (`introtext`, 'foto', 'test') where `id`=7;
без 0 на конце!
т.е. как понимаю запрос не выполняется.но при этом если вручную скопипастить то, что процитировал выше в phpmyadmin - запрос срабатывает и выполняется.

В чем дело?

Последний раз редактировалось Karyuudo; 15.09.2015 в 17:18.
Karyuudo вне форума Ответить с цитированием
Старый 15.09.2015, 18:29   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

mysql_query:
Цитата:
mysql_query() посылает один запрос (посылка нескольких запросов не поддерживается)
Andkorol вне форума Ответить с цитированием
Старый 15.09.2015, 18:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

phpmyadmin видимо умеет выполнять скрипт из запросов. А mysql_query только один запрос.
Скорее всего проще будет в цикле твой запрос гонять.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.09.2015, 19:37   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

выполнять запросы в цикле - изначально плохая идея...... не нужно этого делать.
нужно еще раз пересмотреть задачу с начала... возможно неверно сформулирована.. или не тем путем решаете...

запросы в цикле приводят к конкретной потере производительности да и в принципе обычно не нужны
ADSoft вне форума Ответить с цитированием
Старый 15.09.2015, 19:49   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
запросы в цикле приводят к конкретной потере производительности да и в принципе обычно не нужны
В рамках одной транзакции ничего страшного, но ты прав - в данном случае стоит подумать о другом решении. Тоже уверен что можно было бы задачу эту решить попроще, если знать больше подробностей по хотя бы структуре базы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.09.2015, 20:53   #9
Karyuudo
Пользователь
 
Регистрация: 17.02.2008
Сообщений: 53
По умолчанию

Я как раз циклом собрался делать, после того как не получилось найти аналогичную функцию в sql (preg_replace)
вот и подумал, что можно просто перебрать 30 (условно. макс. количество фоток на рецепт)*4(вариации написания слово фото) = 120 запросов в БД через цикл.


а суть создаваемого - при нажатии на кнопку сохранить в cms метки фото1, фото2 и прочие превращаются в html путь к картинкам. так как в ручную указывать к ним путь занимает много времени
Karyuudo вне форума Ответить с цитированием
Старый 15.09.2015, 21:37   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

ваще не вариант..... храните метки в бд как есть
а после извлечения - обрабатывайте привычным способом и получайте путь - вуаля!
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простейший алгоритм а работает криво Lokos Общие вопросы Delphi 7 27.10.2010 16:21
Простейший DELETE, а не работает((( Blondy SQL, базы данных 6 11.05.2010 20:11
простейший запрос на выборку kate158 БД в Delphi 2 13.05.2009 14:33
Почему не работает простейший макрос? zander Microsoft Office Excel 5 05.02.2009 20:58
Почему запрос работает медленно _SERGEYX_ БД в Delphi 1 24.10.2008 17:30