0

データベースで選択した行を編集できるようにスクリプトを作成しようとしています。

私は運がありませんが。

私がどこで間違ったのか説明してもらえますか?

データベース情報:

ID

名前

タイプ

作られた

提出済み

文章

日にち

キー 1

キー 2

キー 3

キー 4

キー5

チェック済み

作成日

人々が編集できるようにしたい唯一のフィールドは、名前とテキストです

私のedit_guides.phpでそう

$id = $_GET['id'];
$guides = mysql_escape_string(mysql_query("SELECT * FROM guides WHERE id = '$id'"));

これが正しいかどうか少し確信が持てませんか?

ビューなどは必要ありませんか???

次に、フォームの場合:

    ECHO <<<END
<center>
    <FORM ACTION="edit_guide.pro.phpid=$id" enctype="multipart/form-data" METHOD=POST>
    <table width="446" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td colspan="2"><center>Edit a Guide</center></td>
      </tr>
      <tr>
        <td width="79">Made By:</td>
        <td width="367"><input type="text" name="madeby" value="$guides[username]"></td>
      </tr>
      <tr>
        <td>Name of Guide:</td>
        <td><input type="text" name="name" value="$guides[name]"></td>
      </tr>
    <tr>
        <td>Filed Under:</td>
        <td><select name=filedunder>
                   <option value=guides>Guides
            <option value=dailies>Dailies Guides


           <option value=gg#h>Game Guides # - H


            <option value=ggiq>Game Guides I - Q


            <option value=ggrz>Game Guides R - Z


            <option value=helpfulguides>Helpful Guides


            <option value=newbie>Newbie Guides
    </select></td>
      </tr>
       <tr>
        <td valign="top">Content:</td>
        <td><textarea  name="coding" cols="50" rows="35" value="">$guides[coding]</textarea></td>
      </tr>
      <tr>
        <td>Key Word 1</td>
        <td><input type="text" name="key1" value="None"></td>
      </tr>
        <tr>
        <td>Key Word 2</td>
        <td><input type="text" name="key2" value="None"></td>
      </tr>
        <tr>
        <td>Key Word 3</td>
        <td><input type="text" name="key3" value="None"></td>
      </tr>
        <tr>
        <td>Key Word 4</td>
        <td><input type="text" name="key4" value="None"></td>
      </tr>
        <tr>
        <td>Key Word 5</td>
        <td><input type="text" name="key5" value="None"></td>
      </tr>
        <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td colspan="2"><center><font size="-1"><i>
          <input type=submit name=Submit value="Edit">
        </i></font></center></td>
      </tr>
    </table></FORM>

ただし、これはページに表示されます:

メーカー:R

ガイド名:R

Filed Under: デフォルト(ガイド)

内容:R

次に、私の edit_guides.pro.php このページが機能するかどうかはまだわかりませんが、まだそこまで進んでいないためです。

    $id=$_GET['id'];
    $madeby = $_POST['madeby'];
    $name = $_POST['name'];
    $coding = $_POST['coding'];
    $key1 = $_POST['key1'];
    $key2 = $_POST['key2'];
    $key3 = $_POST['key3'];
    $key4 = $_POST['key4'];
    $key5 = $_POST['key5'];
    $filedunder = 'guides';
    $filedunder2 = $_POST['filedunder'];




    if ((!$madeby) OR (!$name) OR (!$coding) OR (!$filedunder2) OR (!$key1) OR (!$key2) OR (!$key3) OR (!$key4) OR (!$key5))

    {

                   die(header("Location: $baseurl/staff/edit_guides.php?id=$id&error=Please+do+not+leave+any+info+blank."));

    }

    else

    {

mysql_query("UPDATE guides SET name = '$name' WHERE id = '$id'");
mysql_query("UPDATE guides SET fileunder = '$filedunder2' WHERE id = '$id'");
mysql_query("UPDATE guides SET coding = '$coding' WHERE id = '$id'");
mysql_query("UPDATE guides SET key1 = '$key1' WHERE id = '$id'");
mysql_query("UPDATE guides SET key2 = '$key2' WHERE id = '$id'");
mysql_query("UPDATE guides SET key3 = '$key3' WHERE id = '$id'");
mysql_query("UPDATE guides SET key4 = '$key4' WHERE id = '$id'");
mysql_query("UPDATE guides SET key5 = '$key5' WHERE id = '$id'");
        header("Location: $baseurl/staff/index1.php?error=The+news+has+been+updated+:)");

私が現在抱えている主な問題は、コンテンツ(テキスト)またはデータベースからの何かが表示されないことです。私にとっては何の意味もない文字Rのみです。

4

2 に答える 2

0

最初のコード スニペットでは、クエリ自体ではなく、クエリの結果をエスケープしています。mysql_fetch_assoc次に、または同様の関数を使用して最初に結果を読み取らずに結果にアクセスしようとしています。最後に、ギャップのある SQL インジェクションの脆弱性に加えて、1 つで十分な場合に 8 つの個別のクエリがあります。何千もの PHP+MySQL チュートリアルがネット上に出回っています。最初にいくつか読むことを検討してください。

于 2012-04-22T12:15:34.897 に答える
0

mysql データベースからの選択の実行

mysql_connect(...);
mysql_select_db($schemaName);
$result = mysql_query($sqlQuery);
$record = mysql_fetch_assoc($result);
mysql_free_result($record)

$record にレコードがあります ($sqlQuery が単一のレコードを返すと仮定します)。

投稿の最後にある一連の SQL クエリについては、「ヘッダー」フィールドを 7 回更新すると、ガイド テーブルのヘッダー フィールドに $key5 変数の値が格納されるだけで、他の以前の値は破棄されることに注意してください。

実は、前回の PHP スクリプトの目的がわかりません。

于 2012-04-22T12:12:14.980 に答える