2012-07-19 85 views
0

我目前有一个脚本来上传照片,目前它上传多个图像,每次创建一个新的图像时,都会向mySQL数据库添加一个新行。不过,我希望用户只能上传最多1张图片。使用变量的PHP SQL更新

因此,我已更改了注册脚本,以便为注册的每个新用户使用默认图像直接插入一行到数据库。

登录后目前的图片上传脚本使用下面的线把数据到数据库

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

然而,这不是我多么希望这个工作;我相信的解决办法是将其更改为UPDATE行。

这是导致一个问题,当我改变线,我相信我还没有完全掌握在MySQL中更新行的概念。

请您指教?

+0

您是否在寻找UPDATE查询?反对插入查询? – Dev 2012-07-19 08:53:02

回答

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')"; 
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注入。在它毁坏您的网站之前请仔细阅读。

Bobby tables,供您考虑。

在这里阅读​​。

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']; 
+0

OP说他想用一个陈述。提供的“重复”答案将允许他/她使用单个查询来插入或更新该行。 – Fluffeh 2012-07-19 09:14:40