|
|
|
| не могу построить запрос
mysql. id bigint
запрос: если 3 первые знака поля id (*) = 3 первым знакам введенного $id > замена (*) на 3 первые знака $id2
$query= "UPDATE `catalogue` SET substring (`id`,1,3) = ? '$id2' WHERE substring (`id`,1,3)= ? '$id'"; | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 09:39)
| | - | |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 12:04)
| | Сначала лучше отреж то что нужно, а потом подставляй в запрос.
Я не немножко не понял, что куда подставлять. Но например
$first3id = substr($id,0,2);
$query=(UPDATE table SET ........ WHERE $id LIKE '$first3id%');
|
Идет сравнение id с переменной обрезаной до первых 3символов. Причем знак % в конце означает любое кол.символов. Т.Е
$id = $first3id и любое кол.цифр | |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 12:11)
| | $query= "UPDATE `catalogue` SET `id ` = substring($id2,1,3) + substring (`id`,4,6) WHERE substring (`id`,1,3)= substring($id2,1,3);
2 вариант. не могу найти ошибку. | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 12:19)
| | Зачем это все в запросе делать?
Вне запроса легче ведь и понятнее, а запрос упростится.
???? | |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 12:38)
| |
$first = substr($id,1,3);
$second = substr($id2,1,3);
$third= substr($id,4,6);
$fourth= substr(`id`,1,3);
$query= "UPDATE `catalogue` SET `id ` = $second + $third WHERE $fourth=$first";
|
PHP Warning: shell_exec() [function.shell-exec]: Unable to execute 'id' in c:\inetpub\wwwroot\объединение\update_id.php on line 25 | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 13:14)
| | почему sherll_exec()?
запросы mysql_query() выполняются! | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2007 в 13:17)
| |
<?php
$id=$_POST['id'];
$id2=$_POST['id2'];
if (!$id || !$id2)
{
echo 'Ошибка ввода.';
exit;
}
if (!get_magic_quotes_gpc())
{
$id = addslashes($id);
$id2 = addslashes($id2);
}
$connection = mysql_connect('localhost','base','');
$db = mysql_select_db ('tree',$connection);
$first = substr($id,1,3);
$second = substr($id2,1,3);
$third= substr($id,4,6);
$fourth= substr(`id`,1,3);
$query= "UPDATE `catalogue` SET `id ` = $second + $third WHERE $fourth=$first";
$result = mysql_query($query);
if ($result) echo "обновление заврешено.";
mysql_close($connection);
?>
|
| |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 13:28)
| | Блин
substr, разве не с нуля отсчет начинается, Т,Е. первый символ насколько я помню 0
|
| |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 13:32)
| | не надо путать substr от php и substring от mysql | |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 13:32)
| | с 1 | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 13:37)
| | с нуля. В php - с нуля. | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 13:28)
| | Разберись с функцией substr
$rest = substr("abcdef", 1); // возвращает "bcdef"
$rest = substr("abcdef", 1, 3); // возвращает "bcd"
$rest = substr("abcdef", 0, 4); // возвращает "abcd"
$rest = substr("abcdef", 0, 8); // возвращает "abcdef"
Если start отрицательный, возвращаемая
строка начинается со start'ового символа,
считая от конца строки string.
Пример 2. Использование отрицательного start
$rest = substr("abcdef", -1); // возвращает "f"
$rest = substr("abcdef", -2); // возвращает "ef"
$rest = substr("abcdef", -3, 1); // возвращает "d"
|
| |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 13:37)
| | $connection = mysql_connect('localhost','base','');
$db = mysql_select_db ('tree',$connection);
$first = substr($id,0,2); // первые 3 символа
$second = substr($id2,0,2);
$third= substr($id,3); // от 3 и до конца
$fourth= substr(`id`,1,3); // а здесь непонятно
$query= "UPDATE `catalogue` SET `id ` = $second + $third WHERE $fourth=$first";
$result = mysql_query($query);
if ($result) echo "обновление заврешено.";
mysql_close($connection); | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 13:28)
| | $fourth= substr(`id`,1,3);
вот здесь ошибка.
бактики стоят. А нужны апострофы. | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2007 в 13:39)
| | а знак переменной $ перед id не нужен? | |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 13:43)
| | Нужен, конечно.
Я указал источник диагностического вывода.
В PHP бактики работают как shell_exec | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2007 в 13:45)
| |
$query= "UPDATE `catalogue` SET `id ` = '$second' + '$third' WHERE $fourth='$first' ";
|
вместо $fourth нужно подставить id, наверное
Сформулируйте чотко задание, там делов то на минуту | |
|
|
|
|
|
|
|
для: ШИМ
(15.06.2007 в 13:50)
| | может вместо + concat использовать?
id в базе 5551100000
5551200000
вводим с клавиатуры ($id) 5550000000
и новый id ($id2) 6660000000
нужно чтобы id в базе сменился на 6661100000 и 6661200000 соответственно | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 14:02)
| |
$old_prefix = '555';
$new_prefix = '666';
$query = "UPDATE catalogue
SET id = COUNCAT('$new_prefix', SUBSTRING(id, 1+LENGTH('$old_prefix')))
WHERE id like '{$old_prefix}_______'"
|
| |
|
|
|
|
|
|
|
для: Trianon
(15.06.2007 в 14:20)
| | $old_prefix =substr($id,0,2);
$new_prefix = substr($id2,0,2);
$query = "UPDATE catalogue SET id = COUNCAT('$new_prefix', SUBSTRING(id, 1+LENGTH('$old_prefix'))) WHERE id like '{$old_prefix}_______'";
результата нет. | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 14:45)
| | substr($id,0,3); | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 14:45)
| | substr($id2,0,3); | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2007 в 14:48)
| | спасибо большое) | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2007 в 14:20)
| | - | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 09:39)
| | id - первичный ключ? | |
|
|
|
|
|
|
|
для: Trianon
(15.06.2007 в 12:50)
| | уже нет) | |
|
|
|
|
|
|
|
для: Medulla
(15.06.2007 в 13:02)
| | опять вопросы)
структура таблицы id, ....., kod,kod2 (обозначают родителские id)
выполняю запрос:
$query = "UPDATE catalogue SET id = CONCAT('$new_prefix', SUBSTRING(id, 1+LENGTH('$old_prefix'))) WHERE id like '{$old_prefix}_______'";
|
необходимо чтобы kod/2 также получили новые префиксы, аналог. id:
$query2 = "UPDATE catalogue SET kod = CONCAT('$new_prefix', SUBSTRING(kod, 1+LENGTH('$old_prefix'))) WHERE kod like '{$old_prefix}_______'";
| так не работает.
каким образом можно объединить все запросы в один? заранее спасибо | |
|
|
|
|
|
|
|
для: Medulla
(17.06.2007 в 20:39)
| | Почему не работает?
У Вас пока нечего объединять. | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2007 в 20:43)
| | необходимо каскадно обновить/удалить только зависимые от id записи. количество уровней заранее неизвестно.
нпр, id
5550000000
5551000000
5551000001
5551000002
5551100000 5551100001
в базе:
id | kod (определяет вышестоящий уровень)
5551000000 | 5550000000
5551100001 | 5551100000
присваиваем 5551000000=666100000=> должны измениться только 6661000001
6661000002
$query = "UPDATE catalogue SET id = CONCAT('$new_prefix', SUBSTRING(id,
1+LENGTH('$old_prefix'))) WHERE id like
'{$old_prefix}_______' and kod = $id or
kod2 = $id or (kod =id or kod2 =id in
(select * from catalogue where
kod =id or kod2 =id in (select * from
catalogue where
))) и.т.д.
";
|
"UPDATE catalogue SET kod =
CONCAT('$new_prefix', SUBSTRING(kod,
1+LENGTH('$old_prefix'))) WHERE kod like
'{$old_prefix}_______'and kod = $id or kod2
= $id[-//-//query]";
|
"UPDATE catalogue SET kod2 =
CONCAT('$new_prefix', SUBSTRING(kod2,
1+LENGTH('$old_prefix'))) WHERE kod2 like
'{$old_prefix}_______'and kod = $id or kod2
= $id[-//-//query]";
|
$query4="delete * from catalogue
where id=$id
or kod= $id or kod2 = $id or
(kod=id or kod2=id in (select * from
catalogue where
kod=id or kod2=id in (select * from
catalogue where
kod=id or kod2=id (select * from
catalogue where
or kod=id or kod2=id (select * from
catalogue where
)
))
))";
|
не знаю как исправить. | |
|
|
|
|
|
|
|
для: Medulla
(18.06.2007 в 07:25)
| | Под новые вопросы лучше заводить новые темы. | |
|
|
|