0

こんにちは、HTML フォームから 1 つのフィールドを更新しようとしています。何らかの理由で、更新クエリに渡すセッション変数の 1 つが受け入れられません。私はすでに変数をページにエコーしたので、それがメモリに存在することはかなり確信しています。

NB、私のコードが恐ろしく安全でないことはわかっていますが、私は PHP を学んでいます。

E2A: var_dump($filename); を実行すると、クエリを実行しようとする前は string(6) "356/18" を返し、クエリの後は NULL を返します。どこにも変数を設定解除していないので、どこに行くことができますか!

ここに私のフォームがあります:

      <form method="post" action="">
      <p>Your username is:&nbsp;<?php echo $_SESSION['userid'] ?>&nbsp;Your company ID is:&nbsp;<?php echo $companyid['id']?></p>
      <h3>Please enter note for file: <?php echo $filename; ?></h3>
      <table width="200" cellpadding="5">
        <tr>
        <th width="18%" align="right" nowrap>Add Note:&nbsp;</th>
        <td width="82%" nowrap>
            <input type="text" name="note" />
        </td>
        </tr>
        <tr>
        <td colspan="2" width="100%" nowrap>
            <input type="submit" value="Submit" name="Submit" />
        </td>
        </tr>
        </table>
      </form>

これが私のUPDATEクエリです:

     $sql = "UPDATE fields SET Notes =          ('".mysql_real_escape_string(stripslashes($_REQUEST['note']))."') 
        WHERE companyId='".$companyid['id']."' AND fileNumber ='".$filename."'";
    if($result = mysql_query($sql)) { 
        echo "<h1>Thank you</h1>Your information has been entered into our database<br><br>";
        echo $sql;
        echo $filename;
        } else { 
        echo "ERROR: ".mysql_error(); 
        } 
        } else { 

$sql をエコーすると、以下が生成されます。

     UPDATE fields SET Notes = ('asdasda') WHERE companyId='11' AND fileNumber =''

ここで、POST 変数をインスタンス化します。

         include "header.php";
         $checkFiles = "checkFiles.php";
         // Catches form input from previous page and stores it into session variable called filename for future reference;
         $_SESSION['filename']=$_POST['filename'];
         $filename = $_SESSION['filename'];
         //User id stuff from previous page too; 
         $userid = $_SESSION['userid'];
         $id = mysql_query("SELECT id FROM users WHERE DXNumber='".$userid."'");
         // Returns pointer so fetch it as an array and insert it into variable $companyid for later use;
         $companyid = mysql_fetch_array($id);
4

2 に答える 2

1

session_start()各ファイルの先頭に含める必要があります。

ただ行う:

AND fileNumber ='".$_SESSION[filename]."'";

更新クエリで。

それでもうまくいかない場合は、値$_SESSION[filename]が設定されていることを確認してください。

于 2013-01-16T16:42:39.283 に答える
0
<h3>Please enter note for file: <?php echo $filename; ?></h3> 

入力ボックスを作成する

<input type="text" name="filename" value="<?php echo $filename; ?>"/>

次に、ファイル名の値が $_POST 配列に渡されます

于 2013-01-16T16:57:52.393 に答える