powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите плиз, не хочет работать mysql_result
11 сообщений из 11, страница 1 из 1
Помогите плиз, не хочет работать mysql_result
    #38352272
Valerianochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
потому как я новичок, долгое время уже не могу решить проблему:
есть две таблицы table1 и table2, у них есть одно одинаковое поле kluch, благодаря которому их объединяют посредством INNER JOIN
у первой таблицы есть аутоинкрементное поле id а у второй эту роль выполняет поле kluch
Так вот загвоздка в удалении записей, если из первой таблицы получается удалить строки без проблем, то со второй никак :(

С первой таблицы запись удаляется просто, посредством:

Код: php
1.
2.
3.
4.
// Если была нажата ссылка удаления, удаляем запись
$query = "delete from table1 where (id='".(int)$_GET['del']."')";
//ссылка для удаления поля
echo "<td><a name=\"del\" href=\"del_data.php?del=".$row["id"]."\">Удалить</a></td>\n";



а вот со второй таблицы надо удалять поле тогда, когда в первой удаляемая строка имеет поле ключ и оно больше не повторяется (в первой таблице) Для простоты приведу пример:

table1:

id ----------name -----------kluch
131 --------Вася -------------1
132 --------Петя --------------2
133 --------Серёжа ----------2

table2:

kluch ------ prof
1 ---------Слесарь
2 ---------Токарь

Допустим мы удаляем строку с id 132 в таблице table1 так как ключ 2 ещё используется строкой id 133 то его удалять не надо
А если мы удаляем строку с id 131 тогда в table2 надо удалить строку с kluch=1 потому как большее не используеться

Есть скрипт который реализует эту задачу, но почему-то функция mysql_result() не хочет работать, выдаёт ошибку:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 5 in Z:\home\MySQL\www\del_data.php on line 31

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$a3 = "SELECT kluch FROM table1 WHERE id='".$_GET["del"]."'";
 $a2 = mysql_query($a3);
 if (isset($_GET["del"])){$aa1 = mysql_result($a2,0);  // 31 строка
 }
 $result = mysql_query("SELECT kluch FROM table1 WHERE kluch='".$a1."' ");
 $num_rows = mysql_num_rows($result);
 if ($num_rows==1) {mysql_query("delete from table2 where (kluch='".$a1."')");
 }
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38352352
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valerianochka, а зачем вам удалять не используемые сейчас профессии? в будущем они появятся - опять заводить будете? с новым ид?
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38352355
Valerianochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

В принципе, вы правы, можно периодически подчищать table2 если это требуется
Просто не пойму, почему mysql_result работать не хочет...
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38352362
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valerianochka
Код: php
1.
 $a2 = mysql_query($a3);

ну, как водится,
Код: php
1.
 $a2 = mysql_query($a3) or die(mysql_error());


Valerianochkaесли это требуетсявот мне и интересно, зачем это вам требуется :)

ЗЫ.
Код: sql
1.
2.
3.
$a3 = "SELECT kluch FROM table1 WHERE id='".$_GET["del"]."'";
 $a2 = mysql_query($a3);
 if (isset($_GET["del"]))

может, я чего-то не понимаю, но у меня такое ощущение, что эта проверка какбе немножко не на своём месте находится...
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38352385
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valerianochkaу них есть одно одинаковое поле kluch, благодаря которому их объединяют посредством INNER JOIN

у первой таблицы есть аутоинкрементное поле id а у второй эту роль выполняет поле kluch


Уже не одинаковые. Поля не могут быть одинаковыми даже если у них одинаковые идентификаторы. Одинаковыми могут быть значения. Никто вас не ограничивает подразумевать какие угодно способы связи, можете искать одинаковые значения в записях любых полей. Даже в условиях использования foreign key и reference никакой драйвер самостоятельно ничего не свяжет. Это умеет делать только человек делающий приложения.

Сообщение об ошибке гласит что вы хотите получить строку номер 0. В БД автоинкремент дает сразу 1 и по-другому быть не может. Нет записи с id==0.
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38352389
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
if (isset($_GET["del"])){$aa1 = mysql_result($a2,0);  // 31 строка



скорее всего жалоба на этот 0 mysql_result($a2,0)

В рекордсете точно есть запись с индексом 0?

Оказывается за всю практику я не разу не обратился к рекордсету по индексу. Сейчас только сообразил. На МС это каноничное moveFirst, do until EOF, moveNext, на майскуле сейчас всякого рода фетчи с нутряными итераторами.

--

Кстати, а вы знаете что эти итераторы не возвращают позицию курсора? Кто знает чем это объяснить?
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38352401
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$a3 = "SELECT kluch FROM table1 WHERE id='".$_GET["del"]."'";
 $a2 = mysql_query($a3);
 if (isset($_GET["del"])){$aa1 = mysql_result($a2,0);  // 31 строка
 }
 $result = mysql_query("SELECT kluch FROM table1 WHERE kluch='".$a1."' ");
 $num_rows = mysql_num_rows($result);
 if ($num_rows==1) {mysql_query("delete from table2 where (kluch='".$a1."')");
 }


Логика просто ужасает. Сначала проверяется существование переменной, а потом производятся какие-то операции с ней. А вы сразу же посылаете SQL-запрос, независимо от того, isset() она или не isset().
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38352528
Valerianochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mhx, можно вообще убрать проверку isset, - msql_result всё равно выдаст ошибку, такую же.
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38353516
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valerianochkamhx, можно вообще убрать проверку isset, - msql_result всё равно выдаст ошибку, такую же.так она, переменная эта, у вас всё-таки иссет или не иссет?
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38353693
Valerianochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Там вверху код для удаления строки в table1, где в переменную $_Get['del'] заноситься значение, при нажатии на ссылку,
а ссылка на этот же скрипт (сама на себя),
можно убрать isset тогда при загрузке скрипта (а он ещё и выводит информацию из таблиц с ссылками для удаления) -
функция mysql_result сразу выдаст ошибку, такую же,
а с isset только после нажатия на ссылку т.е. после передачи значения переменной $_Get['del']
...
Рейтинг: 0 / 0
Помогите плиз, не хочет работать mysql_result
    #38353725
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3 шага:
1. По ID получить @KLUCH из Т1
2. Удалить из Т1 по ID
3. Удалить из Т2 по @KLUCH, если нет строк в Т1, для которых KLUCH=@KLUCH
Код: sql
1.
2.
3.
4.
set @k:=(select kluch from t1 where id=$id
delete t1 where id=$id
delete t2 where kluch=@k
  and not exists(select 1 from t1 where kluch=@k)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите плиз, не хочет работать mysql_result
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]