1

これを正しく行う方法を忘れました。基本的に、1 つの PHP ページでデータベースにデータを送信し (submitscore.php)、別のページでデータベースからデータを取得してテーブルに表示する (showscore.php) 必要があります。

submitscore.php:

if(isset($_POST['score']) && isset($_POST['playername']))
{
    $scorefromflash = mysql_real_escape_string($_POST['score']);
    $namefromflash = mysql_real_escape_string($_POST['playername']);


    $con = mysql_connect("servername","username","password");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("testdb", $con);

    $sql = "INSERT INTO test (Name, Score) VALUES ('$namefromflash', '$scorefromflash')";

    header("./showscore.php");

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }

    mysql_close($con); 
}
?>

showcore.php

<?php

$con = mysql_connect("server","username","password");
if (!$con)
{
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("testdb", $con);

echo ("Name: ".$namefromflash);
echo ("Score: ".$scorefromflash);

$result = mysql_query("SELECT * FROM test ORDER BY Score DESC");

echo "<table border='1'>
<tr>
<th>Name</th>
<th>Score</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Name'] . "</td>";
  echo "<td>" . $row['Score'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

if (!mysql_query($sql,$con))
{
  die('Error: ' . mysql_error());
}

mysql_close($con); 

?>

Notice: Undefined index: scoreこれを行うとエラーが発生Notice: Undefined index: playernameし、submitscore.phpページに表示されるため、質問します。

データベースにレコードを挿入することも、テーブルを表示することもありません。

ありがとう。

4

4 に答える 4

2

データベースに値を挿入する前に関数を使用する必要がありcodesます..sql injectionmysql_real_escape_string

あなたは必要ありません

$scorefromflash = $_POST['score'];
$namefromflash = $_POST['playername'];

ショースコアページで...

于 2013-05-26T12:18:36.117 に答える
1

これが私のために働いたコードです:

submitscore.php:

<?php
if(isset($_REQUEST['score']) && isset($_REQUEST['playername']))
{
    $con = mysql_connect("host","user","password");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("database", $con);    
    $scorefromflash = mysql_real_escape_string($_REQUEST['score']);
    $namefromflash = mysql_real_escape_string($_REQUEST['playername']);

    $sql = "INSERT INTO test (Name, Score)
           VALUES ('$namefromflash', '$scorefromflash')";

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }

    mysql_close($con);

    header("Location: showscore.php");
}
?>

showcore.php

<?php
$con = mysql_connect("host","user","password");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $con);

$result = mysql_query("SELECT * FROM test ORDER BY Score DESC");
if (!$result)
{
    die('Error: ' . mysql_error());
}

echo "<table border='1'>
<tr>
<th>Name</th>
<th>Score</th>
</tr>";

while($row = mysql_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['Name'] . "</td>";
    echo "<td>" . $row['Score'] . "</td>";
    echo "</tr>";
}
echo "</table>";

mysql_close($con);
?>

データを挿入すると、すべてのデータを含むテーブルが表示されるページにリダイレクトされます。データベース資格情報を変更します。テストに使用したGETリクエストは次のとおりです。

http://domain/submitscore.php?score=1&playername=2
于 2013-05-26T12:20:53.460 に答える
0

最初: コードが保存されていません。のようなものを使用しますmysql_escape_string

これは実際にはエラーではありません。それは(それが言うように)通知です。isset変数が設定されているかどうかを確認するために関数を使用しません。前のページが送信していないため、この変数に値がない可能性があります。

代わりに使用する場合

$scorefromflash = $_POST['score'];

これを使って:

$scorefromflash = isset($_POST['score'])?$_POST['score']:null

その後、この通知はなくなります。他の$_POST値についても

于 2013-05-26T12:23:01.783 に答える
0

ヘッダーを設定してページをリロードし、showscore.php に戻そうとしていると思います。$_POST['score'] and $_POST['playername']

submitscore.php でこれを試してください:

header("location: ./showscore.php?player=$namefromflash&score=$scorefromflash");

そして、showscore.php 内で次を使用します。

$scorefromflash = $_REQUEST['score'];
$namefromflash = $_REQUEST['playername'];
于 2013-05-26T12:21:05.323 に答える