1

ユーザーが自分の名前、Facebook の名前、および画像を変更するための簡単なフォームを書きました。

 <!!--edit form--!!>

 <div id="edit">
 <table width="300" border="0"  align="center" cellpadding="0" cellspacing="1"   
 bgcolor="#CCCCCC">
 <tr>
 <td>
 <table width="100%" border="0" cellpadding="1" cellspacing="1"bgcolor="#FFFFFF">
 <tr>
 <form method="POST" action="save_profile.php">
 <td colspan="3"><strong>Username<br><? echo $row['session'];?></strong></td>
 <td colspan="3"><strong>Name</strong><input type="text" name="name" id="name" 
 value="<?      echo $row['name'];?>"/><br></td>
 <td colspan="3"><strong>Facebook</strong><input type="text" name="fb" id="fb" value="<? echo $row['facebook'];?>"/></td>
 <td colspan="3"><strong>Image</strong><input type="text" name="img" id="img" value="<? echo $row['img'];?>"/></td>
 <input type="hidden" name="pros" />
 <input type="submit" value="Save" />
 </form>

これは save_profile.php です

 <?
 include"sp-includes/sp-config2.php";
 $resultz = mysql_query($slctq);
 while($rowqw = mysql_fetch_array($resultz, MYSQL_ASSOC))
 {
 if($_POST['pros']){
 $name=$_POST['name'];
 $fb=$_POST['fb'];
 $img=$_POST['img'];
 $do =mysql_query("UPDATE profile SET name='$name', facebook='$fb', img='$img' WHERE      id='$rowqw[id]'");
 }
 echo $rowqw['id'];
 }
 ?>

どこが間違っているのかわからない..

4

3 に答える 3

2

コードの問題:

  • エラーをチェックしていません。を使用しmysql_error()ます。
  • 入力をチェックしていません(有効かどうか)。パラメータをバインドするか、でエスケープする必要がありますmysql_real_escape_string
  • クエリを別の文字列に入れます。のようなもの$query = "UPDATE ..."; $do = mysql_query($query);。デバッグに便利です。送信している正確なクエリが何であるかを知っています。
  • あなたは$rowq[id]間違った方法を使用しています。.文字列で表記法を使用する場合は、複数の文字列を連結します。または で囲みます{$rowq[id]}

これをすべて行うと、問題は自分で解決できます。ドキュメントも読んでください。

于 2012-05-17T10:19:59.540 に答える
2

まず、クエリをサニタイズしてください。あなたのクエリは現在、悪用される可能性が完全に開いており、それが完全に失敗の理由である可能性があります。

次のようにクエリを記述します。

mysql_query('UPDATE profile SET name="'.mysql_real_escape_string($name).'", facebook="'.mysql_real_escape_string($fb).'", img="'.mysql_real_escape_string($img).'" WHERE      id="'.mysql_real_escape_string($rowqw['id']).'";');

また、rowqw インデックスは id ではなく「id」と記述する必要があることに注意してください。

于 2012-05-17T10:15:55.367 に答える
0

コードを $do = mysql_query("UPDATE profile SET name = '$name', facebook = '$fb', img = '$img' WHERE id = '$rowqw[id]'"); に変更します。

于 2013-04-04T00:21:00.850 に答える