我有以下用PHP编写的sql语句。
$sql='INSERT INTO pictures (`picture`) VALUES ("'.$imgs[$i]['name'].'",)';
$db->query($sql);
$imgs[$i]['sqlID'] = $this->id=mysql_insert_id();
$imgs[$i]['newImgName'] = $imgs[$i]['sqlID'].'_'.$imgs[$i]['name'];
$sql='UPDATE pictures SET picture="'.$imgs[$i]['newImgName'].'" WHERE id='.$imgs[$i]['sqlID'];
$db->query($sql);
现在,这会将图像名称写入数据库表格图片。完成之后,我得到mysql_insert_id(),然后我将使用下划线更新名称前面的最后一个id的图片名称。
我会这样做以确保没有图片名称可以相同。导致所有这些图片保存在同一文件夹中。我第一次设置sql查询时是否有另一种方法来保存该ID?或者还有其他更好的方法来实现这一结果吗?
感谢所有建议
答案 0 :(得分:1)
我认为在这种特殊情况下,在文件名中使用MySQL insert Id是合理的。在某些情况下可能需要它,但是你没有提供任何信息,为什么它会出现在这个中。
考虑类似的事情:
while( file_exists( $folder . $filename ) {
$filename = rand(1,999) . '_' . $filename;
}
$imgs[$i]['newImgName'] = $filename;
当然,如果你想系统地增加用于为原始文件名添加前缀的数字,你可以使用更大范围的rand
或循环计数器。
答案 1 :(得分:1)
使用原生auto_increment - 没有别的办法。您需要执行您描述的3个步骤。
正如Dan Bracuk所提到的,你可以创建一个存储过程来执行3次查询(执行后仍然可以获得插入ID)。
其他可能的选择是: