Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL使用已分配的ID生成url_Php_Sql - Fatal编程技术网

Php MySQL使用已分配的ID生成url

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

我正在尝试使用已分配的自动递增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 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谢谢,让它工作了!