0

私はphp mysqlのコーディングが初めてなので、助けてくださいこのコードは次のようなエラーを出しています:

注意: 未定義のインデックス: C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php の 15 行目の名前

Notice: C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php の 15 行目の未定義のインデックス: surname

注意: 未定義のインデックス: C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php の 15 行目の contact_number

注意: 未定義のインデックス: C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php の 15 行目の email

Notice: 未定義のインデックス: C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php の 15 行目の位置

注意: 未定義のインデックス: C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php の 15 行目の user_name

Notice: Undefined index: password in C:\Program Files\EasyPHP-5.3.9\www\Authentication1\update1_ac.php 行 15 ERROR can't update data

これがコードです

<?php
    $host="localhost"; // Host name 
    $username="root"; // Mysql username 
    $password=""; // Mysql password `enter code here`
    $db_name="administrator"; // Database name 
    $tbl_name="players"; // Table name 

// Connect to server and select database.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");
    if (isset($_POST['submit'])){
// update data in mysql database 
    $sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', Surname='".$_POST['surname']."', contact='".$_POST['contact_number']."', email='".$_POST['email']."', position='".$_POST['position']."', user_name='".$_POST['user_name']."', password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

    $result=mysql_query($sql);

// if successfully updated. 
    if(!empty($result)){                     //The error is here
    echo "Successful";
    echo "<BR>";
    echo "<a href='list2_player.php'>View result</a>";
        }
    }
    else {
    echo "ERROR can not update data";
        }
    ?>
4

3 に答える 3

2

少し前にこれに回答しましたが、更新を実行して列名を指定しようとしているときに、SQL で変数を使用しないでください。

SQL ステートメントは次のようになります。

$sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', // etc etc
                                 ^ Column names don't need $

$name問題は、コードが基本的に、単に列名を使用するのではなく、コードで指定していない変数を探していることです。

于 2013-10-10T11:00:21.860 に答える
0

form submit の前に update sql を呼び出していると思います。まず、更新前にチェックが必要です

if(isset($_POST['submit']))
{
// update data in mysql database 
    $sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', Surname='".$_POST['surname']."', contact='".$_POST['contact_number']."', email='".$_POST['email']."', position='".$_POST['position']."', user_name='".$_POST['user_name']."', password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

    $result=mysql_query($sql);

// if successfully updated. 
    if(!empty($result)){                     //The error is here
    echo "Successful";
    echo "<BR>";
    echo "<a href='list2_player.php'>View result</a>";
        }

    else {
    echo "ERROR can not update data";
        }
}
于 2013-10-10T11:24:48.630 に答える
0

これがあなたのエラーです

$sql="UPDATE $tbl_name ports SET $name='".$_POST['name']."', $Surname='".$_POST['surname']."', $contact='".$_POST['contact_number']."', $email='".$_POST['email']."', $position='".$_POST['position']."', $user_name='".$_POST['user_name']."', $password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

PHP は "" (二重引用符) 文字列で $[variablename] が変数を意味すると考えるため、これは機能しません。したがって、'$name' を name という変数の値に置き換えようとしていると考えられますが、これは明らかに存在しません。

MySQL では、変数名の前に $ 記号を付ける必要はありません。代わりにこのコードを使用してください

$sql="UPDATE $tbl_name ports SET name='".$_POST['name']."', Surname='".$_POST['surname']."', contact='".$_POST['contact_number']."', email='".$_POST['email']."', position='".$_POST['position']."', user_name='".$_POST['user_name']."', password='".$_POST['password']."' WHERE id='".$_POST['player_id']."'";

また、「姓」は大文字で、その他は大文字ではありません。列名と変数名の最初の文字を大文字にすることは通常推奨されないため、再確認することをお勧めします。

Ps: あなたは PHP と MySQL を初めて使用するので、あなたのコードは「SQL インジェクション攻撃」と呼ばれる攻撃に対して脆弱であることを警告しておきます。ハッカーがサーバー上で独自の SQL コードを実行するためのトリックです。詳細については、こちらを参照してください。

私は PDO (PHP データ オブジェクト) を使用することを好みます。これは使いやすく、SQL インジェクション攻撃から安全な「準備済みステートメント」と呼ばれるものを使用することもできます。PDO の詳細については、こちらをご覧ください。または、 nettuts+で簡単なチュートリアルを読むことができます。

于 2013-10-10T11:01:17.713 に答える