php mysql insert(max(id)+1)

时间:2012-11-29 07:41:40

标签: php mysql

我有一个表image_tb,它有3个字段id,images,link(id是auto auto_increment),这是我的插入代码:

mysql_query("
insert into image_tb 
(images,link) 
select 
'".(max(id)+1).".jpeg','".$link."' 
from image_tb
");

它返回:

Warning: max(): When only one parameter is given, it must be an array

如何修改?感谢。

4 个答案:

答案 0 :(得分:3)

你更好地定义一个函数,通过查询得到最后一个id,如下所示: "通过id desc limit 0,1"从image_tb顺序中选择id 然后增加它,它的realibe。

答案 1 :(得分:3)

我认为你并不是要关闭字符串:

select '" ...

应该是

select MAX(id) + 1

否则你正在使用php函数max,我认为你根本不打算这样做。

顺便说一下,你不应该使用mysql_*。使用PDOmysqli

答案 2 :(得分:0)

在查询中执行,

mysql_query("
insert into image_tb (images,link) 
select CONCAT(COALESCE((SELECT MAX(ID) + 1 FROM image_tb),1), '.jpeg'),'".$link."' 
from image_tb
");

您的查询容易被SQL Injection攻击,请阅读以下文章以免受其侵害

答案 3 :(得分:0)

你考虑过这样的事吗?

  1. 插入空文件名数据
  2. 更新表格,其中filename为空,将文件名设置为CONCAT(id,“。jpeg”)或其他内容(CONCAT是用于“添加”字符串的函数)。