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インジェクションをかなり懇願しています。それがあなたのサイトを台無しにする前にこれを読んでください。

ボビーテーブル、あなたの考慮のために。

ここでDUPLICATEKEYを読んでください。

于 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

この質問にはいくつかの情報が欠けていると思います。

  • REPLACE INTOステートメントを調べることをお勧めします。
  • または、MySQL UPDATEリファレンス マニュアル ページを参照してください。
于 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 に答える