Php MySQL使用已分配的ID生成url
我正在尝试使用已分配的自动递增ID在SQL数据库中生成URL 提交新表单时,SQL会自动为我生成唯一的Php MySQL使用已分配的ID生成url,php,sql,Php,Sql,我正在尝试使用已分配的自动递增ID在SQL数据库中生成URL 提交新表单时,SQL会自动为我生成唯一的lens\u id。如何将其自动添加到此lens\u url?(下图) 试试这样的方法 $qry1="insert into tablename(lens_name,lens_url,lens_category,lens_author,lens_discription,lens_repert)values('A','B','C','D','E','F')";// your query to in
lens\u id
。如何将其自动添加到此lens\u url
?(下图)
试试这样的方法
$qry1="insert into tablename(lens_name,lens_url,lens_category,lens_author,lens_discription,lens_repert)values('A','B','C','D','E','F')";// your query to insert data to table
mysqli_query($con,$qry1); // run query
$last_insertid=mysqli_insert_id($con); // save last insetred ID
$url="localhost:8888/lenseview/post.php?id=".$last_insertid; //prepare url
$qry2="upadte tablename set lens_url=$url where lens_id=$last_insertid"; //update query
mysqli_query($con,$qry2); // run your query to update url
试试这样的
$qry1="insert into tablename(lens_name,lens_url,lens_category,lens_author,lens_discription,lens_repert)values('A','B','C','D','E','F')";// your query to insert data to table
mysqli_query($con,$qry1); // run query
$last_insertid=mysqli_insert_id($con); // save last insetred ID
$url="localhost:8888/lenseview/post.php?id=".$last_insertid; //prepare url
$qry2="upadte tablename set lens_url=$url where lens_id=$last_insertid"; //update query
mysqli_query($con,$qry2); // run your query to update url
这里有两个选项: 1) 使用存储过程(这将需要更改插入行的任何位置的代码) 2) 正常情况下使用触发器和插入-下面类似的操作应该可以做到这一点:
DELIMITER //
CREATE TRIGGER my_awesome_trigger
BEFORE INSERT
ON your_table_name
FOR EACH ROW
BEGIN
DECLARE next_id int default 0;
SELECT auto_increment INTO next_id
FROM information_schema.tables
WHERE table_name = 'your_table_name'
AND table_schema = DATABASE();
SET NEW.lens_url = CONCAT('localhost:8888/.../', next_id);
END; //
DELIMITER ;
这里有两个选项: 1) 使用存储过程(这将需要更改插入行的任何位置的代码) 2) 正常情况下使用触发器和插入-下面类似的操作应该可以做到这一点:
DELIMITER //
CREATE TRIGGER my_awesome_trigger
BEFORE INSERT
ON your_table_name
FOR EACH ROW
BEGIN
DECLARE next_id int default 0;
SELECT auto_increment INTO next_id
FROM information_schema.tables
WHERE table_name = 'your_table_name'
AND table_schema = DATABASE();
SET NEW.lens_url = CONCAT('localhost:8888/.../', next_id);
END; //
DELIMITER ;
您可以通过在表上创建触发器来实现这一点。触发器如下所示:
DELIMITER $$
CREATE TRIGGER `UpdateLensURL` BEFORE INSERT ON `your_table_name`
FOR EACH ROW BEGIN
SET NEW.lens_url= CONCAT('localhost:8888/lensview/post.php?id=', (
SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'your_table_name'
));
END;
$$
DELIMITER ;
您可以通过在表上创建触发器来实现这一点。触发器如下所示:
DELIMITER $$
CREATE TRIGGER `UpdateLensURL` BEFORE INSERT ON `your_table_name`
FOR EACH ROW BEGIN
SET NEW.lens_url= CONCAT('localhost:8888/lensview/post.php?id=', (
SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'your_table_name'
));
END;
$$
DELIMITER ;
我认为最简单的选择是这样
$Last_Lens_IdQ = mysqli_query($conn, "SELECT `lens_id` FROM `table` ORDER BY `lens_id` DESC LIMIT 1");
$Last_LensId = mysqli_fetch_array($Last_Lens_IdQ);
$x = $Last_Lens[0]++;
$LensUrl = "localhost:8888/lenseview/post.php?id=".$x;
然后插入字段并在插入镜头url列时使用
$LensUrl
,我认为最简单的选择是
$Last_Lens_IdQ = mysqli_query($conn, "SELECT `lens_id` FROM `table` ORDER BY `lens_id` DESC LIMIT 1");
$Last_LensId = mysqli_fetch_array($Last_Lens_IdQ);
$x = $Last_Lens[0]++;
$LensUrl = "localhost:8888/lenseview/post.php?id=".$x;
然后插入字段并使用
$LensUrl
在插入lens url列时您必须发布一些关于如何将数据插入表中的代码。另外,我不知道为什么要在数据库中存储完整的URL,但您可能应该考虑动态生成这些URL,因为当主机名或URL的一部分发生更改时,您的所有记录都将出错。如果是自动递增的
您需要先检查最后一个镜头id,然后在返回的数字中添加1,然后在lens_url中使用它。(用PHP交谈)。现在,如果你真的想这样做,你必须获得你的INSERT
的lastInsertId()
,然后使用id更新lens\u url
。@Syscall谢谢,让它工作了!您必须发布一些关于如何将数据插入表的代码。另外,我不知道为什么要在数据库中存储完整的URL,但您可能应该考虑动态生成这些URL,因为当主机名或URL的一部分发生更改时,您的所有记录都将出错。如果是自动递增的
您需要先检查最后一个镜头id,然后在返回的数字中添加1,然后在lens_url中使用它。(用PHP交谈)。现在,如果你真的想这样做,你必须获得你的INSERT
的lastInsertId()
,然后使用id更新lens\u url
。@Syscall谢谢,让它工作了!