Выборка из MySQL

Статус
В этой теме нельзя размещать новые ответы.

Stripe

Участник
Регистрация
20 Окт 2007
Сообщения
164
Реакции
9
Запись в таблице TABLE, в столбце STOLBETC выглядит для разных полей по разному. Вот реальный пример:
1;;234;;34;;45
3;;64;;3434
45;;232;;64;56;;56;;67

Точка с запятой двойная введена в эти последовательности как дальнейшй разделитель. Цифр может быть не ограниченное колличество.
Эти цифры являются ID-шниками записей в другой таблице. Как при переходе по ссылке
вывести все данные из поля таблицы TABLE где id=64, вернее 64 совпадает с одной из цифр в столбце STOLBETC указаных выше последовательностях?

Добавлено через 29 минут
Пытаюсь решить таким образом проблему:
PHP:
$STOLBETC = $stationresquery['STOLBETC'];

     	$stylearray = explode(";;", $STOLBETC);
			$count = count($stylearray);
            echo $idstyle.' - номер ID стиля в БД <br>';
            
		for($i=0;$i<=$count;$i++) {
			if($stylearray[$i]=$idstyle) {
			    $stationarray = mysql_query("SELECT * FROM `station` WHERE `idstyle`='".$STOLBETC."'");
				print "<pre>"; 
                print_r($stationarray);
                print "</pre>\n";
				
			} 
		}

Не получается
 
PHP:
 $stationarray = mysql_query("SELECT * FROM `station` WHERE `idstyle`='".$STOLBETC."'");
Запрос SELECT возвращает ссылку на базу данных, а не массив. Используйте после запроса mysql_fetch_row.
И, кстати, из скрипта не видно: откуда берется переменная $idstyle?
 
*** скрытое содержание ***
Откуда взялась переменная $result ?

Добавлено через 18 минут
PHP:
$result = mysql_query('SELECT * FROM `station` WHERE `idstyle` = "'.$idstyle.'" OR `idstyle` LIKE "%'.$idstyle.';%" OR `idstyle` LIKE "%;'.$idstyle.';%" LIMIT 0 , 30;');

$idstyle = ('64')

Warning: mysql_fetch_array(:( supplied argument is not a valid MySQL result resource in /style.php on line ***

Warning: mysql_free_result(:( supplied argument is not a valid MySQL result resource in /ypi.ru/style.php on line ***
Это строки:
while ($row = mysql_fetch_array($result))
mysql_free_result($result);

Добавлено через 41 минуту
Вопрос решен, спасибо!
 
Для правильного выполнения запроса $idstyle должно быть только целым чмслом!

Правильно:
$idstyle = 64;

Неправильно:
$idstyle = '64';
$idstyle = ('64');
 
Неправильно:
$idstyle = '64';
$idstyle = ('64');
ммм... а почему это не правильные числа?

Еще один вопрос по сабжу:
Если у меня $row[0], $row[1] могут расти до бесконечности, как указать выводить их все не прописывая их все в коде $row[0], $row[1], $row[2], $row[3], ... $row[n]?
 
1) при
PHP:
$result = mysql_query('SELECT * FROM `station` WHERE `idstyle` = "'.$idstyle.'" ...
уже идет экранирование (т.е. $idstyle типа Integer преобразуем в String)
PHP:
"'.$idstyle.'"
и вы вставляя свой код $idstyle = '64'; получаете:
PHP:
$result = mysql_query('SELECT * FROM `station` WHERE `idstyle` = "''64''" ...';
двойное экранирование, отсюда и выводится ошибка или так же при
PHP:
$result = mysql_query('SELECT * FROM `station` WHERE `idstyle` = "'('64')'" ...';
А при использовании целого числа $idstyle = 64; запрос выполняется правильно!

2) Для этого используйте mysql_num_rows($result) и загоняйте количество в цикл (можно и до бесконечности использовать, главное чтобы сервак выдержал!:(
PHP:
// колличество столбцов
$cols = mysql_num_rows($result);
$cols в цикл загоняем...
 
Вопрос собсно про ошибки в логах:
mysql_free_result(:( supplied resource is not a valid MySQL result resource File: published/SC/html/scripts/classes/class.database.php Line: 314 Error #: 2
это
PHP:
return is_resource($this->link)?mysql_free_result($this->link):false
предшествует этому, я так понимаю:
PHP:
function affectedRows(){
		
		switch ($this->type){
			case 'mysql':
				return mysql_affected_rows($this->link);
			break;
и что тут не так, неврублюсь я чего то?
 
А сам запрос как формируется? Ошибка явно в нем...
 
Ха, если б знать, это же функция по обнулению результатов выборки
не буду же я весь файл тут приводить, мож кто сталкивался, оно то как бы не влияет на работу магазина но логи надо чистить от ошибок
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху