Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

PHP&MySQL. Нужно узнать значение присвоеное автоинкр. полю.   Найти похожие ветки 

 
SergP ©   (2003-12-18 00:50) [0]

Добавляю запись в таблицу:

$postquery="INSERT INTO $post_table VALUES (0, $parent, $topic, $forum, $datetime, $userid, "$poster_ip", "$subject", "$post_text",0,0,1,"admin","",0,"")";

@mysql_query($postquery);

Первое поле в ней типа mediumint(8) unsigned - автоинкрементное
Т.е. я туда типа записываю 0, но MySQL автоматически присваивает ему нужное значение.
Вопрос: как мне узнать какое значение было присвоено этому автоинкрементному полю в только-что добавленной записи?


 
Style ©   (2003-12-18 01:03) [1]

Можно вытащить последнюю строчку

$sql = "select `название того поля` from $post_table
order by `название того поля` DESC LIMIT 1"

Я вообще не пользуюсь автоинкрементными полями
просто написал несколько функции и вроде все пашет.

//************** Возвращает новый ID **************
function GetID($Table, $ID)
{
$query =
"SELECT ".$ID." from ".$Table." Order by ".$ID." DESC LIMIT 1";
$result = mysql_query($query) or Die("Error");
if (mysql_num_rows($result) != 0)
{
$row = mysql_fetch_row($result);
}
mysql_free_result($result);

return $row[0] + "1";
}

//************** Может и это пригодится **************

class TQueryResult
{
var $RowCount; //Количество строк
var $ColCount; //Кол-во Полей
var $Data; //Массив с данными
var $Fields; //Названия полей

function TQueryResult($result) //Конструкор
{
$this->RowCount = mysql_num_rows($result);
$this->ColCount = mysql_num_fields($result);
$this->ConvertToQueryResult($result);

$Array = array();
for ($i=0; $i < $this->ColCount; $i++)
{
$Array = $Array + array(mysql_field_name($result, $i) => $i);
}
$this->Fields = $Array;
}

function FieldByName($name) //В общем таким макаром можно написать интерфейс как в BDE TDataSet :)
{
return $this->Fields[$name];
}

// Данная функция конвертирует Result запроса в Массив Data;
function ConvertToQueryResult($result)
{
$i = 0;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$this->Data[$i] = $line;
$u = 0;
foreach($line as $value)
{
$this->Data[$i][$u] = $value;
$u++;
}
$i++;
}
}

}


 
SergP ©   (2003-12-18 01:20) [2]


> Style © (18.12.03 01:03) [1]
> Можно вытащить последнюю строчку


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

Хотя мне нужен этот id (значение автоинкрементного поля) для того чтобы в другие таблицы ( со списком топиков и форумов подобавлять записи о последнем посте в конкретных топике и форуме...) Ладно. В принципе появилась мысль. Попробую ее заюзать...


 
Style ©   (2003-12-18 01:27) [3]

>>Ладно. В принципе появилась мысль. Попробую ее заюзать...

Самое главное что бы были мысли!!! :)
Удачи.


 
SergP ©   (2003-12-18 09:20) [4]

Все. На другом форуме мне посоветовали:

http://ua2.php.net/mysql_insert_id

Так что вопрос отменяется....



Страницы: 1 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-25530
Floppy
2003-12-19 14:32
2004.01.09
Delphi 5.0 на Win2k


1-25290
JB
2003-12-23 13:03
2004.01.09
TCollectionItem


3-25240
GameBoy
2003-12-10 22:49
2004.01.09
Эксклюзивный режим


1-25388
lena19
2003-12-24 21:44
2004.01.09
подскажите как избавится от части данных в массиве


1-25438
Stas
2003-12-23 15:06
2004.01.09
Градиентаня заливка