繁体   English   中英

PHP SQL更新使用变量

[英]PHP SQL UPDATE using variables

我目前有一个脚本可以上传照片,此刻它可以上传多张图像,每次创建新图像时,都会在mySQL数据库中添加新行。 不过,我希望用户最多只能上传1张图片。

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

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

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

但是,这不是我想要的工作方式。 我相信解决方法是将其更改为UPDATE行。

当我换行时,这会引起问题,我相信我还不太了解mySQL中更新行的概念。

请您指教?

$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将解决此问题。

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

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

鲍比桌 ,供您考虑。

在这里阅读DUPLICATE KEY

假设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'; ";

您也可以将replace用作:

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

我认为这个问题缺少一些信息。

您需要执行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'];

也许解决方法是更换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM