0

我有一个表 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

4 回答 4

3

最好定义一个函数,通过这样的查询获取最后一个 id:“从 image_tb order by id desc limit 0,1 中选择 id”然后增加它,它的 realibe。

于 2012-11-29T07:45:04.570 回答
3

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

select '" ...

应该

select MAX(id) + 1

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

顺便说一句,你不应该使用mysql_*. 使用PDOmysqli

于 2012-11-29T07:45:55.617 回答
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,请阅读下面的文章以保护它

于 2012-11-29T07:46:55.973 回答
0

你考虑过这样的事情吗?

  1. 插入带有空文件名的数据
  2. 更新文件名为空的表,将文件名设置为 CONCAT(id, ".jpeg") 或其他内容(CONCAT 是用于“添加”字符串的函数)。
于 2012-11-29T07:49:09.450 回答