2017-09-10 7 views
0

自分の写真を使って入力を選択し、その特定の写真にテキストを入力したいとします。どうすればそれを達成できますか?ここではそれを行うの私の試みです:SQLクエリーで選択された入力フィールドのIDのIDと一致する方法は?

$username = $_SESSION['username'];  
$db = mysqli_connect("localhost", "root", "", "pictures"); 
     $sql = "SELECT * FROM images WHERE username = '$username'"; 
     $result = mysqli_query($db, $sql); 
     $row = mysqli_fetch_array($result); 
     $id = $row['id']; 
     $send = $_POST['send']; 

if (isset($_POST['submit'])) { 
     $db = mysqli_connect("localhost", "root", "", "pictures"); 
     $sql = "UPDATE images SET send='$send' WHERE username='$username' AND id='$id'"; 
     mysqli_query($db, $sql); 
     header("Location: index"); 
    } else { 
    } 

HTML:

<form enctype="multipart/form-data" action="send_message" method="post"> 
<input name="send" placeholder="Send message" /> 
<button name="submit"></button> 
</form> 

私がいる問題は、私はテキストを追加行うとき、それは私が選択した画像に行く代わりにしないで最初のクエリはクエリに一致します。

答えて

0

変更したい画像のIDをsendに送信する必要があります。 これをint型にキャストしてプリペアドステートメントを使用し、そのIDを持つデータベース行をuserと共に選択することができます(IDだけでは選択しないので、フォームを送信するユーザーの値は変更できません)。

)の所有者ので、あなたのフォームは、次のようになります。だから、あなたは新しいsend値を設定したい電話のIDを持つ隠しフィールドを作成する必要があり

<form method="post"> 
    <input type="hidden" name="id" value="<?PHP echo $row['id']; ?>"/> 
    <input type="text" name="send" placeholder="Send message"/> 
    <button name="submit"></button> 
</form> 

。私はあなたがデータベースから行を持っていると仮定しましたが、idは隠されたidフィールドの値として挿入されます。しかし、$_GET['id']または$_POST['id']を使用すると、リンク/ボタンを作成して写真を編集するページにユーザーをリダイレクトすることができます。

写真をクリックすることで、隠しIDフィールドの値をjavascriptで設定することもできます。

+0

私はそこに私の質問に何かする必要がありますか?私は '$ _POST ['id']'を使うことができますが、正しい絵に正しく挿入すれば実験する必要があります。 –

+0

@HannahParksあなたの更新クエリはすでにidを持っていますので、idでピクチャのみを更新します。idが主キーであれば、このID maxのピクチャが1つあります。同じIDの写真はあまりありません。 SQLインジェクションを避けるためにクエリを準備することができます。 http://php.net/manual/en/mysqli.prepare.phpを参照してください。クエリはクエリとデータをデータとして送信するため、データはサーバによってクエリとして解釈されません。 –

関連する問題