|
|
|
| Подскажите пожалуйста где допустил ошибку в данном коде?
$data = mysql_query("SELECT name, i1, i2, i3 FROM book", $link);
while ($arr=mysql_fetch_array($data))
{
echo "$arr[name]<br>";
if($arr[i1]!=0)
{
$name[i1] = mysql_query("SELECT name FROM info WHERE id='$arr[i1]'", $link);
echo " $name[i1]<br>";
}
if($arr[i2]!=0)
{
$name[i2] = mysql_query("SELECT name FROM info WHERE id='$arr[i2]'", $link);
echo " $name[i2]<br>";
}
if($arr[i3]!=0)
{
$name[i3] = mysql_query("SELECT name FROM info WHERE id'='$arr[i3]'", $link);
echo " $name[i3]<br>";
}
}
|
На месте вывода $name[i1]/$name[i2]/$name[i3] везде стоит Resource id #... | |
|
|
|
|
|
|
|
для: IAndi
(22.08.2010 в 18:24)
| | А зачем вы вот это делаете mysql_fetch_array() ? Хотя вообще-то, лучше mysql_fetch_assoc. | |
|
|
|
|
|
|
|
для: sim5
(22.08.2010 в 18:30)
| | mysql_fetch_array() для построения списка. А name[i1]/name[i2]/name[i3] - доп данные из др. таблицы. Или каким способом можно еще их получить? | |
|
|
|
|
|
|
|
для: IAndi
(22.08.2010 в 18:43)
| | Это от куда такие сведения, что mysql_fetch_array() служит для построения списка? А нука заремируйте весь цикл и вместо него выполните:
echo $data;
Что наблюдаем? | |
|
|
|
|
|
|
|
для: sim5
(22.08.2010 в 18:46)
| | Ммм... а наблюдаем Resource id #3. | |
|
|
|
|
|
|
|
для: IAndi
(22.08.2010 в 18:49)
| | mysql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив или и тот, и другой. И извлекает она его как раз из полученного запросом к базе ресурса. Вот только ни к чему она вам эта функция. Вы работаете далее с ассоциативным массивом, следобвательно два набора вам не нужны, и использовать нужно функцию mysql_fetch_assoc(), либо уж, если использовать то указывать функции mysql_fetch_array() соответсвубщий флаг, определяющий нужный вам набор, в данном случае MYSQL_ASSOC.
Вот из первого ресурса вы получаете данные ряда как массив, а далее пытаетесь получить нечто непосредственно из русурса (echo), вот потому у вас так и....
А вообще же, заглубляйтесь в мануал и читать, и изучать, прежде чем что-то писать.
Так $arr[i1] нельзя писать (вернее привыкать так писать), а следует имя ключа брать в кавычки - $arr['i1'], и далее в остальных случаях... | |
|
|
|
|
|
|
|
для: sim5
(22.08.2010 в 18:54)
| | При имени ключа в кавычках выскакивает ошибка
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
|
и уже не первый раз. Вот и привык так писать. С циклом тоже проблем не было. И выводило все правильно, если не делать запросов в цикле, а выводить только ИД. А пишу уже не первый год, но с такой проблемой столкнулся в первый раз, вот и пытаюсь узнать чем вызвана. | |
|
|
|
|
|
|
|
для: IAndi
(22.08.2010 в 19:16)
| | В этом случае echo "$arr[name]<br>"; или где?
К тому же, в запросах своих вы обращаетесь к полю с именем id, и надо полагать, что это номер, зачем этот номер в кавычки вы обращаете (не имя ключа, а саму переменную)?
Если все правильно писать, то никаких Parse error: syntax error, unexpected... не будет. А вот если привыкнуть так писать (не заключая строковые имена ключей в кавычки), то рано или поздно вполне можете нарваться на проблему. Пока ваши ошибки исправляет РНР, до поры до времни, пока разработчикам не придет в голову зарезервировать за некой константой тоже имя, какое вы дали одному из своих ключей, вот тогда.....
Нельзя! Это не правильно! Читайте мануал. Изучайте. | |
|
|
|
|
|
|
|
для: IAndi
(22.08.2010 в 18:24)
| | Запросы в цикле - это жостко. Попробуй так например:
<?php
$data = mysql_query('SELECT `book`.`name` AS `bookName`, `book`.`i1`, `book`.`i2`, `book`.`i3`, `info`.`name` FROM `book`, `info` WHERE `info`.`id` IN(`book`.`i1`, `book`.`i2`, `book`.`i3`)');
|
| |
|
|
|
|
|
|
|
для: nikita2206
(22.08.2010 в 18:59)
| | Товарищ элементарного не знает, а вы его грузите такими сложными запросами, уж тогда объясните ему, что сие означает. | |
|
|
|