|
|
|
|
|
для: Trianon
(25.07.2009 в 01:01)
| | Да.
Проверил, отлично работает. Вот пример:
<?php
$query = "SELECT * FROM $table";
$res = mysql_query($query);
while($result = mysql_fetch_array($res))
{
...
}
mysql_data_seek($res, 0);
for($i=0; $i<mysql_num_rows($res); $i++)
{
$result = mysql_fetch_array($res);
...
}
?>
|
| |
|
|
|
|
|
|
|
для: aetern
(24.07.2009 в 23:42)
| | mysql_data_seek()
нет? | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2009 в 23:21)
| | да
if(mysql_affected_rows()>0)
|
помогло.
Спасибо.
А насчет самого первого вопроса. Можно ли все-таки заново проходить по массиву после mysql_fetch_array(), вдруг понадобиться, или это настолько неграмотно, что не стоит об этом и думать? | |
|
|
|
|
|
|
|
для: aetern
(24.07.2009 в 22:30)
| | mysql_affected_rows()
нет? | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2009 в 11:10)
| | Спасибо за Вашу поддержку. Вот верный вариант:
$query = "DELETE $tbl_brands
FROM $tbl_brands
LEFT JOIN $tbl_goods
ON $tbl_brands.brand = $tbl_goods.brand
WHERE $tbl_goods.brand IS NULL
AND $tbl_brands.id_brand= $_GET[id_brand] ";
|
Вот только как узнать произошло ли удаление? Ведь DELETE в любом случае обработал 1 запись и mysql_query($query) всегда true и = 1 и условие
$brand = mysql_query($query);
if($brand)
{
echo 'удалили';
}
else
{
echo 'не удалили по причине: '.mysql_error();
}
|
всегда выполняется как 'удалили'.
Вот если бы проверить был ли $tbl_goods.brand IS NULL, но как это сделать что-то не соображу. Если бы это был SELECT, то я бы проверил ключ if(empty($brand['brand'])) в таблице $tbl_goods, но с DELETEовским синтаксисом что-то не справляюсь. Подскажите как? | |
|
|
|
|
|
|
|
для: aetern
(23.07.2009 в 22:55)
| | Вообще-то я предлагал применять второй вариант DELETE
DELETE [LOW_PRIORITY | QUICK] table_name[.*] [,table_name[.*] ...]
FROM table-references
[WHERE where_definition]
|
причем с LEFT JOIN,
а не тот, что у Вас.
У Вас LEFT JOIN нет , и соответственно логика распадается.
Попробуйте сперва отработать SELECT, который выбрал бы строки к удалению. | |
|
|
|
|
|
|
|
для: Trianon
(23.07.2009 в 08:48)
| | Тогда почему в запросе
$query = "DELETE FROM $tbl_brands
USING $tbl_brands, $tbl_goods
WHERE $tbl_brands.brand=$tbl_goods.brand
AND $tbl_goods.brand IS NULL
AND $tbl_brands.id_brand=$_GET[id_brand]";
|
не удаляется строка с $tbl_brands.brand, где $tbl_goods.brand IS NULL ???
Я писал об этом выше, но никто не прокомментировал :-( | |
|
|
|
|
|
|
|
для: aetern
(23.07.2009 в 00:08)
| | это одно и то же.
Отсутствует - следовательно неопределено. | |
|
|
|
|
|
|
|
для: Trianon
(22.07.2009 в 22:53)
| | а как сделать: если $tbl_goods.brand отсутствует (см. запрос выше)? | |
|
|
|
|
|
|
|
для: aetern
(22.07.2009 в 22:26)
| | если $tbl_goods.brand не определено. | |
|
|
|
|