[英]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.