0

我目前有一个上传照片的脚本,目前它会上传多张图片,每次创建新的时候都会向 mySQL 数据库添加一个新行。但是我希望用户最多只能上传 1 张图片。

因此,我更改了注册脚本,将一行直接插入到数据库中,并为每个注册的新用户提供一个默认图像。

登录后的图像上传脚本当前使用以下行将数据放入数据库

$sql2= "INSERT INTO `profile_photo` (`profile_id`,`title`,`size`,`type`,`reference`)
            VALUES ('".$_SESSION['id']."','$title','$size','$type','$pic'); ";

但是,这不是我希望它工作的方式;我相信解决方案是将其更改为 UPDATE 行。

当我更改行时,这会导致问题,我相信我还没有完全掌握在 mySQL 中更新行的概念。

请问你能建议吗?

4

5 回答 5

2
$sql2= 
"INSERT INTO `profile_photo` (`profile_id`,`title`,`size`,`type`,`reference`)
VALUES ('".$_SESSION['id']."','$title','$size','$type','$pic')
ON DUPLICATE KEY UPDATE title = VALUES(title), size = VALUES(size), type = VALUES(type), reference = VALUES(reference)";

如果该profile_id列获得索引将解决此问题unique

行为如果尚未添加,
这会将INSERT所有数据放在新行中。profile_id如果是,它将UPDATE改为运行。

但是,您的代码几乎是在乞求 mysql 注入。在它破坏您的网站之前,请务必阅读此内容。

鲍比桌,供您考虑。

在此处阅读DUPLICATE KEY

于 2012-07-19T08:52:57.997 回答
1

假设这profile_id是您的唯一密钥:

$sql2= "
INSERT INTO 
    `profile_photo` (`profile_id`,`title`,`size`,`type`,`reference`)
    VALUES ('".$_SESSION['id']."','$title','$size','$type','$pic')
    on duplicate key update set title='$title', size='$size', type='$type', reference='$reference'; ";

您还可以使用替换为:

$sql2= "
Replace into 
    `profile_photo` (`profile_id`,`title`,`size`,`type`,`reference`)
    VALUES ('".$_SESSION['id']."','$title','$size','$type','$pic')";
于 2012-07-19T08:52:40.530 回答
0

我认为这个问题遗漏了一些信息。

于 2012-07-19T08:56:03.337 回答
0

您需要执行 UPDATE sql 语句:

$sql3= "UPDATE `profile_photo` SET `title`='" . mysql_real_escale_string($title) .
       "', `size`='" . mysql_real_escape_string($size) . 
       "', `type`='" . mysql_real_escape_string($type) .
       "', `reference`='" . mysql_real_escape_string($pic) .
       "' WHERE `profile_id`=" . $_SESSION['id'];
于 2012-07-19T08:56:34.273 回答
0

也许解决方案是Replace

于 2012-07-19T08:57:01.387 回答