Возможно глюк PHP или что это? (речь о функции mysql_insert_id)

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

AlexandrK

Новичок
Возможно глюк PHP или что это? (речь о функции mysql_insert_id)

Добрый день,

Сразу скажу версию PHP 5.1.6

При написании одного скрипта столкнулся со следующей проблемкой.
Скрипт, добавляет в базу некоторую информацию, после этого должен был создавать файлы в имени которого содержатся ID только что добавленной в базу инфы (то что в mysql_insert_id). Изначально таблица в которую заносится информация - чистая. Т.е. при добавлении первой строки ей присваивается ID 1

Короткий пример с описаниями:
PHP:
for($i=1;$i<4;$i++) {

// Таблица пуста. Заносим первую запись. 
// Добавление некоторой инфы в базу
mysql_query ("INSERT INTO `ppm` ( `id` , `cats`) VALUES ('', '".$abc[$i]."');");

// после этого по идее в данный момент mysql_insert_id() должна содержать первый ID
// так и есть если к примеру вывести через
echo mysql_insert_id();

// но стоит сделать сохрание файла в имени которого стоит как раз ID, 
// то уже при сохранении самого файла имя файла будет не 1.txt как хотелось бы, а начинатся с 0.txt:
$file = fopen ("./name/".mysql_insert_id().".txt", "w");
	fwrite ($file, $img);
fclose ($file);


}
Что это за глюк, не могу понять. Может кто объяснит?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Не надо обвинять систему в собственной неквалифицированности. Во втором случае, он будет не 0, а false, потому что его повторный вызов ошибочен без наличия запроса. Вам нужно сохранить результат первого вызова функции mysql_insert_id в переменную, и подставлять туда, куда угодно.
 

AlexandrK

Новичок
Вам нужно сохранить результат первого вызова функции mysql_insert_id в переменную
я так тоже делал и подставлял уже эту переменную где надо, но результат один и тот же. Проблема именно при сохранении файлов с именем ID.


Вы сами попробуйте простой скрипт:

PHP:
for($i=0;$i<10;$i++){

	mysql_query ("INSERT INTO `ppm` ( `id` , `cat`) VALUES ('', '".$i."');");
	$ins1 = mysql_insert_id();

echo $ins1."<br>"; // здесь вы увидите всё как и должно быть,

		$file = fopen ("./names/".$ins1.".txt", "w");  // а здесь вы сразу увидите ошибку!
			fwrite ($file, $img);
		fclose ($file);

}
 

Wicked

Новичок
вот уж точно... при использовании в именах файлов переменная каким-то магическим образом меняет свое значение. Не верю!
 

Wicked

Новичок
у меня скрипт вывел 10 нулей.

а тебе рекомендую почитать вот этот материал: http://phpfaq.ru/debug , в частности про работу с бд
 

AlexandrK

Новичок
Сюда я скрипт писал руками и торопился, можно было бы это заметить если вы такой "опытный", и подправить.

И 10 нулей ну никак в этом скрипте не могло вылезти!

-~{}~ 25.08.08 21:49:

Ладно всё, разобрался.
Всем спасибо, все свободны :)
 

Фанат

oncle terrible
Команда форума
Сюда я скрипт писал руками и торопился
А в правилах форума, которые ты, несомненно, читал, когда регистрировался, написан прямой запрет на такие вещи.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху