как с этим разобраться, если я пишу
$query = mysql_query("SELECT am_id FROM table");
$row = mysql_fetch_assoc($query);
while ($row = mysql_fetch_assoc($query);) {
echo $row['am_id'];
}
то тогда скрипт в цикле не будет выводить значение первой выбранной из БД строчки.
Если же писать
$query = mysql_query("SELECT am_id FROM table");
while ($row = mysql_fetch_assoc($query);) {
echo $row['am_id'];
}
то все выведет отлично.
Вопрос этот появился от того что мне надо сделать INSERT в БД с помощью такого запроса
mysql_query("INSERT INTO table (firstname,am_id) VALUES ('$new_worker[0]', ' ".$row['am_id']." ') ");
$row['am_id'] - я получаю из запроса до INSERT, и я как бы знаю точно, что из БД всегда будет доставаться только одна запись.
вот такой код полностью:
$query = mysql_query("SELECT am_id FROM table");
$row = mysql_fetch_assoc($query);
mysql_query("INSERT INTO table (firstname,am_id) VALUES ('$new_worker[0]', ' ".$row['am_id'][0]." ') ");
правда ничего не вставляется :(
Спустя 9 минут, 50 секунд (9.05.2011 - 17:11) Игорь_Vasinsky написал(а):
чтобы контролировать кол-во строк н выводе - достаточно использовать LIMIT
Цитата |
$query = mysql_query("SELECT `am_id` FROM `table` LIMIT 1"); |
- одна строка
Здесь же (в первом коде)
вторая строчк вообще лишняя, ты же следующей сам в цикл $row прогоняешь.
По поводу ни чего не вставляется:
достаточно сделать вывод ошибки используя or die(mysql_error()); и всё станет понятно
Здесь же (в первом коде)
$query = mysql_query("SELECT am_id FROM table");
$row = mysql_fetch_assoc($query);
while ($row = mysql_fetch_assoc($query))
{
echo $row['am_id'];
}
вторая строчк вообще лишняя, ты же следующей сам в цикл $row прогоняешь.
По поводу ни чего не вставляется:
достаточно сделать вывод ошибки используя or die(mysql_error()); и всё станет понятно
mysql_query("INSERT INTO table (firstname,am_id) VALUES ('".$new_worker[0]."', '".$row['am_id'][0]."') ") or die(mysql_error());
Спустя 20 минут, 12 секунд (9.05.2011 - 17:31) alex12060 написал(а):
logic
Давай разберемся, я уже много раз объяснял эту особенность.
Смотри, что делает функция mysql_fetch_assoc()? !разные функции не влияют на конечный результат!
Она вытаскивает по дескриптору информацию из запроса. Итак, функция сработала. В одиночном виде она вытаскивает только 1 строку.
Вот, она вытащила эту строку. Потом ты начинаешь выводить:
Но пойми, там уже нет первой строки, так как ты в первый раз вытащил ее по запросу.
Вот в чем причина, используй второй твой вариант.
Пошли далее.
Ты правильно предположил, должна вставиться одна запись в БД. Но ты напутал все и вся.
Поэтому, в случает твоем тебе вместо этого:
Надо написать так:
Вот и вся филькина грамота.
Давай разберемся, я уже много раз объяснял эту особенность.
Смотри, что делает функция mysql_fetch_assoc()? !разные функции не влияют на конечный результат!
Она вытаскивает по дескриптору информацию из запроса. Итак, функция сработала. В одиночном виде она вытаскивает только 1 строку.
Вот, она вытащила эту строку. Потом ты начинаешь выводить:
while ($row = mysql_fetch_assoc($query)) {
echo $row['am_id'];
}
Но пойми, там уже нет первой строки, так как ты в первый раз вытащил ее по запросу.
Вот в чем причина, используй второй твой вариант.
Пошли далее.
Ты правильно предположил, должна вставиться одна запись в БД. Но ты напутал все и вся.
mysql_fetch_assoc() // Вытаскивает информацию из БД и использует имена таблиц как ключи в массиве.
mysql_fetch_row() // Вытаскивает информацию из БД, но использует в качестве ключей числа от 0 до N
Поэтому, в случает твоем тебе вместо этого:
$query = mysql_query("SELECT am_id FROM table");
$row = mysql_fetch_assoc($query);
mysql_query("INSERT INTO table (firstname,am_id) VALUES ('$new_worker[0]', ' ".$row['am_id'][0]." ') ");
Надо написать так:
$query = mysql_query("SELECT am_id FROM table") or die(mysql_error());
$row = mysql_fetch_assoc($query);
mysql_query("INSERT INTO table (`firstname`, `am_id`) VALUES ('".$new_worker[0]."', '".$row['am_id']."')") or die(mysql_error());
Вот и вся филькина грамота.
Спустя 2 минуты, 2 секунды (9.05.2011 - 17:33) inpost написал(а):
logic
Разобрался или мне ответить?
Разобрался или мне ответить?

Спустя 6 минут, 49 секунд (9.05.2011 - 17:40) alex12060 написал(а):
inpost
Давай и ты до кучи, может и я еще что-то новое узнаю
Давай и ты до кучи, может и я еще что-то новое узнаю

Спустя 7 минут, 28 секунд (9.05.2011 - 17:48) ИНСИ написал(а):
Цитата |
$new_worker[0] |
Вроде все объяснили, но вот тут неверно. Так будет работать, но правильный синтаксис надо всегда помнить:
$new_worker['0']
Спустя 12 минут, 42 секунды (9.05.2011 - 18:00) alex12060 написал(а):
Спустя 4 минуты, 4 секунды (9.05.2011 - 18:05) Игорь_Vasinsky написал(а):
ну это же числовой индекс, я всегда опускаю ковычки
Спустя 5 минут, 28 секунд (9.05.2011 - 18:10) ИНСИ написал(а):
alex12060 мда .... Почитай сам всю инфу, которая там написана, особенно остановить свое внимание на:
Цитата |
// Неверно. Это работает, но из-за неопределенной константы с // именем fruit также вызывает ошибку PHP уровня E_NOTICE // // Notice: Use of undefined constant fruit - assumed 'fruit' in... print $arr[fruit]; // apple |
Спустя 3 минуты, 50 секунд (9.05.2011 - 18:14) alex12060 написал(а):
Все, что ты написал выше - правильно, но прочитай в свою очередь про константы.
bool define ( string name, mixed value [, bool case_insensitive])
Такой ошибки при числовых индексах не может быть по определению. Сам попробуй, если вылезет нотис, то это будет нонсенс.
bool define ( string name, mixed value [, bool case_insensitive])
Такой ошибки при числовых индексах не может быть по определению. Сам попробуй, если вылезет нотис, то это будет нонсенс.
Спустя 1 минута, 31 секунда (9.05.2011 - 18:15) Rand написал(а):
velbox, не правильно писать строковый индекс без кавычек, по скольку PHP принимает это не за строку, а за константу. А числа нужно писать без кавычек.
Спустя 1 минута, 42 секунды (9.05.2011 - 18:17) ИНСИ написал(а):
alex12060 вот ты странный. Давай тогда предположим следующее:
В начале мы видим так:
затем так:
То есть, в одних местах, мы будем делать с ковычками, а в других без... и что за мусор получится? Надо придерживаться общих понятий.
В начале мы видим так:
$new_worker[0]
затем так:
$new_worker['long']
То есть, в одних местах, мы будем делать с ковычками, а в других без... и что за мусор получится? Надо придерживаться общих понятий.
Спустя 6 минут, 56 секунд (9.05.2011 - 18:24) Rand написал(а):
А я вот никого мусора тут не вижу. В первом примере число, во втором строка. Всё логично.
Если я вижу массив с индексом $arr[1] - я делаю выводы, что ключи этого массива только числовые. А если вижу $arr['1'], я делаю выводы, что это ассоциативный массив в котором кроме $arr['1'], $arr['2'] может быть и $arr['third'].
Если я вижу массив с индексом $arr[1] - я делаю выводы, что ключи этого массива только числовые. А если вижу $arr['1'], я делаю выводы, что это ассоциативный массив в котором кроме $arr['1'], $arr['2'] может быть и $arr['third'].
Спустя 30 секунд (9.05.2011 - 18:24) alex12060 написал(а):
velbox
Это по-моему принципы банальные. Каждому свое. Но фраза Надо придерживаться общих понятий немного настораживает. Что значит общее понятие? Где ты это вычитал?
Это по-моему принципы банальные. Каждому свое. Но фраза Надо придерживаться общих понятий немного настораживает. Что значит общее понятие? Где ты это вычитал?
Спустя 2 минуты, 31 секунда (9.05.2011 - 18:27) neadekvat написал(а):
Цитата (Rand @ 9.05.2011 - 19:24) |
Если я вижу массив с индексом $arr[1] - я делаю выводы, что ключи этого массива только числовые. А если вижу $arr['1'], я делаю выводы, что это ассоциативный массив в котором кроме $arr['1'], $arr['2'] может быть и $arr['third']. |
Не надо делать таких выводов.
В ассоциативном массиве ключи могут быть числовыми, не только сткроковыми. И к ним надо в любом случаи обращаться без кавычек. Потому что число - это константа. А константу не надо брать в кавычки.
velbox, ты опять радуешь своими знаниями и убеждениями.
Спустя 9 минут, 37 секунд (9.05.2011 - 18:37) Rand написал(а):
neadekvat, я то числа всегда пишу без кавычек, я имел ввиду, что в простом массиве (с числовыми индексами) не может быть строковых ключей. А в данном случае присутствие строкового ключа '1' сразу переводит массив из простого в разряд ассоциативного (хотя слышал, что в PHP все массивы по сути ассоциативные, логически так правильнее). Я не призывал писать в ассоциативном массиве числа в кавычках, как ты подумал.
Спустя 1 час, 29 минут, 59 секунд (9.05.2011 - 20:07) ИНСИ написал(а):
Цитата |
velbox, ты опять радуешь своими знаниями и убеждениями. |
А ты как всегда пытаешь показать, что знаешь больше чем другие.
Блин, парни. Я не сказал что это не правильно. Я сказал:
Цитата |
Так будет работать |
А далее сказал:
Цитата |
но правильный синтаксис надо всегда помнить |
Пояснил, что именно я имел в виду:
Цитата |
Надо придерживаться общих понятий. |
То есть писать так, чтобы было понятно ВСЕМ! Начинающий программист НИКОГДА не поймет в чем дело, если в одном месте без ковычек а в другом с ковычками. Посмотри начинающий прогер без ковычек и будет писать потом и строковые ключи без ковычек и будет ноутис.
Спустя 4 минуты, 7 секунд (9.05.2011 - 20:11) neadekvat написал(а):
Цитата (velbox @ 9.05.2011 - 21:07) |
То есть писать так, чтобы было понятно ВСЕМ! Начинающий программист НИКОГДА не поймет в чем дело, если в одном месте без ковычек а в другом с ковычками. Посмотри начинающий прогер без ковычек и будет писать потом и строковые ключи без ковычек и будет ноутис. |
WTF? Начинающий программист будет смотреть и видеть: числовые ключи в кавычки не обрамлясются, а строковые - обрамаляются, и будет делать также. А потом либо сам поймет, либо спросит, почему же именно так.
А писать код, исходя из того, чтобы новичкам было понятно.. Это смешно, право, мы же не об учебном коде говорим, а о рабочем.
Цитата (velbox @ 9.05.2011 - 21:07) |
Блин, парни. Я не сказал что это не правильно. |
А я утверждаю, что писать числовые в кавычках - это неправильно и не предполагаю обратного варианта.
Спустя 1 час, 16 минут, 27 секунд (9.05.2011 - 21:27) ИНСИ написал(а):
Цитата |
Такой ошибки при числовых индексах не может быть по определению. |
Согласен, в числовых индексах ошибки не будет. Я говорю что намного понятнее ведь, когда везде одинаково.
В общем, это стиль каждого программиста отдельно. Я не буду никому навязывать. Это мое мнение, что лучше везде писать в ковычках.
Спустя 2 часа, 11 минут, 51 секунда (9.05.2011 - 23:39) logic написал(а):
)))) горячо тут ))
Спасибо вам большое за все объяснения, сейчас ещё разок все прочитаю...И не знаю к кому себя отнести, к начинающим или к недумающим, но числовые ключи я пишу без ковычек, а строковые в ковычках )))
ребят спасибо большое, нашел у себя ошибку в коде, но ваши обьяснения очень полезны!
Спасибо вам большое за все объяснения, сейчас ещё разок все прочитаю...И не знаю к кому себя отнести, к начинающим или к недумающим, но числовые ключи я пишу без ковычек, а строковые в ковычках )))
ребят спасибо большое, нашел у себя ошибку в коде, но ваши обьяснения очень полезны!

Спустя 12 часов, 54 минуты, 33 секунды (10.05.2011 - 12:34) inpost написал(а):
logic
числовые надо без кавычек, а ассоциативный массив - в кавычках.
числовые надо без кавычек, а ассоциативный массив - в кавычках.