MySQL使用已分配的ID生成URL

时间:2018-02-17 09:46:45

标签: php sql

我尝试使用已分配的auto_incremented ID

在SQL数据库中生成URL

提交新表单后,SQL会自动为我生成唯一lens_id。如何在此lens_url中自动添加? (如下图)

enter image description here

4 个答案:

答案 0 :(得分:1)

尝试这样的事情

$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 :(得分:1)

这里有两个选项:

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 ;

答案 2 :(得分:1)

您可以通过在表格上创建触发器来完成此操作。触发如下,

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 ;

答案 3 :(得分:0)

我认为最简单的选择就是这个

$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插入镜头网址列