PHP SQL UPDATE使用变量

时间:2012-07-19 08:48:52

标签: php mysql variables

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

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

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

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

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

当我改变这一行时,这会引起一个问题,我相信我还没有完全理解在mySQL中更新行的概念。

请你指教一下吗?

5 个答案:

答案 0 :(得分: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,供您考虑。

在此处阅读DUPLICATE KEY

答案 1 :(得分: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 :(得分:0)

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

答案 3 :(得分: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'];

答案 4 :(得分:0)

也许解决方案是Replace