-1

mysqlデータベースを更新することになっているphpコードについてサポートが必要です。私はそれをこのように試しました:

<?php mysql_connect("servername","name","passwort"); 
mysql_select_db("dbname"); 
$name = $_GET["name"]; $points = $_GET["points"]; 
$query = "UPDATE highscore SET points=".$points." WHERE name='".$name."'";

mysql_query($query) 
mysql_close(); ?>

私はそれを次のように呼びました:

http://.../write.php?name=%22Alexa%20Bomkamp%22&points=%22100

しかし、文字通り何も起こりませんでした。エラーはありませんが、更新もありません。誰かが私が間違っていることを知っていますか?

手伝ってくれてありがとう :)

4

4 に答える 4

1

$_GETまず、スクリプトを呼び出すときに使用するパラメーターを取得することを確認する必要があります。これにはAprint_r($_GET);で十分です。

第二に、あなたのコードは恐ろしいように見えます。あなたは改行、そしてすべてを失っています。さらに恐ろしいのは、SQLインジェクションに対して完全に脆弱であるということです。エスケープされていない、チェックされていないユーザー入力を含むコマンドをSQLに実行させないでください。パラメータを少し追加すると、データベースが簡単に失われる可能性があります。

もう1つは、コードから判断すると、悪い習慣を使用しているということです。データベースに新しい名前を入力するとどうなりますか。その場合、ステートメントは失敗します。代わりUPDATEに使用する必要があります。INSERT INTO

<?php
$link = mysql_connect( 'servername', 'loginname', 'password' ) or die('Unable to connect.');
mysql_select_db( 'database', $link ) or die('Unable to select database.');

$query = 'UPDATE `highscore` SET `points`=' .mysql_real_escape_string($_GET['points']). ' WHERE `name`="' .mysql_real_escape_string($_GET['name']). '";';
mysql_query( $query, $link );
mysql_close($link);
?>

%22また、あなたはあなたの要求に不必要を持っています。でコードを呼び出します?name=Alexa Bompkamp&points=100

于 2012-07-04T10:25:00.280 に答える
0

URL が間違っています%22" htmlentity を取り、避けてください。番号には%22も含まれています

この URL で呼び出します: .../write.php?name=Alexa%20Bomkamp&points=100

于 2012-07-04T10:22:00.197 に答える
0

このコードを試してください:

<?php
$conn = mysql_connect("servername","name","passwort"); 
mysql_select_db("dbname");
if (mysql_error()) {
    echo "<br />". mysql_errno(). " : ". mysql_error();
}
$name = $_GET["name"]; $points = $_GET["points"]; 
$query = "UPDATE highscore SET points=$points WHERE name='$name'";

mysql_query($query, $conn);
mysql_close($conn);
?>
于 2012-07-04T10:23:57.280 に答える
-1

リクエストの送信中にパラメータをエンコードする場合は、デコードしてください。パラメータに値をmysql_real_escape_string()割り当てる際にSQLインジェクションを回避するためにもう1つ使用してくださいget

于 2012-07-04T10:25:08.497 に答える