0

基本的に、2 つの php ペーパーを作成しました。テーブル全体を選択し、日付と ID 番号だけを表示します。各日付には、display.php ファイルへのリンクがあります。次の display.php ページに ID 番号をプルします。display.php ファイルでやりたいことは、その PHP を使用して行全体を表示することです。

だから私はそれがそのデータを引き出すことを知っていますが、そこのステートメントSelect * from tablename WHERE id=1にID番号を取得する方法は?WHERE

これはメインページのコードです:

// SQL クエリ $strSQL = "SELECT * FROM table1";

// Execute the query (the recordset $rs contains the result)
$rs = mysql_query($strSQL);

// Loop the recordset $rs
            while($row = mysql_fetch_array($rs)) {

               // DATE
              $strName = $row['date'];

               // Create a link to display.php with the id-value in the URL
               $strLink = "<a href = 'display.php?ID = " . $row['ID'] . "'>" . $strName . "</a>";

                // List link
               echo "<li>" . $strLink . "</li>";


  }

そのコード リンクは機能し、display.php に移動します。ID番号を使用してリンクを作成するにはどうすればよいですか。ポストコマンドを使用しますか?

$id= Post['id'] 
then WHERE id = '$id'

?

TBH 私はそれを試しましたが、何も得られませんでした。助言がありますか?

USING GET now...まだ運が悪いので、GETステートメントを試しました。私のアドレスバーにはID番号が表示されます。それで、ID番号がそれに引っ張られているのがわかります。ID をエコーし​​てみただけでも、コードが台無しになっているかどうかを確認しました。

<?php 
    $dbhost = 'localhost';
    $dbuser = 'myusername';
    $dbpass = 'mypw';
    $dbname = 'mydbname';
    $id = $_GET['id'];
    mysql_connect($dbhost, $dbuser, $dbpass) or die('MySQL connect failed. ' . mysql_error());
    mysql_select_db($dbname) or die('Cannot select database. ' . mysql_error());
?>


<body>
ID #<?php  echo $id ?>
</body>
</html>

<body>
ID #<?php  echo $id ?>
</body>
</html>

まだ運がない

4

2 に答える 2

0

クエリ文字列で渡される値は、POST ではなく GET を使用します。

Post はフォーム変数用です。

また、クエリ文字列から値を取得する際の SQL インジェクション攻撃の危険性にも注意する必要があります。

于 2012-08-13T17:47:56.200 に答える
0

したがって、表示ファイルでは、次のようなことを行います

$id = $_GET['ID'];

//DO SANITIZATION ETC ON THE ID HERE TO MAKE SURE ITS SOMETHING WE EXPECTED (AN INT)

$sql = "SELECT STUFF WHERE ID = {$id}"; //FOR BREVITY SAKE DOING AWAY WITH SECURITY 

したがって、基本的に最初のスクリプトが行っているのは、URL クエリ文字列で ID を渡すことです。ここで渡された値は、$_GETスーパー グローバル配列でアクセスできます。

ここと他のスーパー グローバルにアクセスするものはすべて、アプリケーションにとって完全に危険なものとして扱う必要があります。それをフィルタリングして完全にエスケープする必要があります。データベースに挿入する前に、データベースの正しいメカニズムを使用してエスケープする必要があります。そうしないと、SQL インジェクション攻撃にさらされることになります。

于 2012-08-13T17:53:24.253 に答える