1

この Web サイトで解決策を検索しましたが、結果はありません。次の問題で立ち往生しています。私のコードでは、 「where句」エラーで不明な列「member_id」が発生します。前にそれを聞いたことがない..だから私は今少し混乱しています.

これは私のコードです:

<?php
require("db.php");
$id = $_REQUEST['member_id'];

$result = mysql_query("SELECT * FROM members WHERE member_id = '$id'");
$test = mysql_fetch_array($result);
if (!$result)
    {
    die("Error: Data not found..");
    }
$admin=$test['admin'] ;
$firstname=$test['firstname'] ;
$lastname=$test['lastname'] ;
$mail= $test['mail'] ;
$login=$test['login'] ;
$passwd=$test['passwd'] ;

if(isset($_POST['save']))
{
$admin_save = $_POST['admin'];
$firstname_save = $_POST['firstname'];
$lastname_save = $_POST['lastname'];
$mail_save = $_POST['mail'];
$login_save = $_POST['login'];
$passwd_save = md5($_POST['password']);

mysql_query("UPDATE lijst SET admin ='$admin_save',firstname ='$firstname_save',lastname ='$lastname_save', mail ='$mail_save', login ='$login_save',
     passwd ='$passwd_save' WHERE member_id = '$id'")
            or die(mysql_error());
echo "Saved!";

header("Location: main.php");
}
mysql_close($conn);
?>

フォーム :

<form method="post">
<table>
    <tr>
        <td>Admin</td>
        <td><input type="text" name="admin" class="text w_20" value="<?php echo $admin ?>"/></td>
    </tr>
    <tr>
        <td>Voornaam</td>
        <td><input type="text" name="firstname" class="text w_20" value="<?php echo $firstname ?>"/></td>
    </tr>
    <tr>
        <td>Achternaam</td>
        <td><input type="text" name="lastname" class="text w_20" value="<?php echo $lastname ?>"/></td>
    </tr>
    <tr>
        <td>E-mail</td>
        <td><input type="text" name="mail" class="text w_20" value="<?php echo $mail ?>"/></td>
    </tr>
    <tr>
        <td>Gebruikersnaam</td>
        <td><input type="text" name="login" class="text w_20" value="<?php echo $login ?>"/></td>
    </tr>
    <tr>
        <td>Password</td>
        <td><input type="text" name="passwd" class="text w_20" value="<?php echo $passwd ?>"/></td>
    </tr>
    <tr>
        <td>&nbsp;</td>
        <td><input type="submit" name="save" value="update" /></td>
    </tr>
</table>
</form>
4

1 に答える 1

2

member_idエラーは、データベース テーブルにフィールドがないことを示していますlijstWHEREフィールドを追加するか、句から条件を削除してください。

投稿したばかりの SQL を考えると、テーブルはmembersnotと呼ばれますlijst。したがって、クエリを変更します。

UPDATE members ......

編集:MD5の問題は、html入力に名前が付けられているが、POST配列passwdをターゲットにしているためです:password

$passwd_save = md5($_POST['password']);

への変更:

$passwd_save = md5($_POST['passwd']);

最後に、クエリは SQL インジェクションに対して脆弱です。簡単な修正として、ユーザー入力を に実行しますmysql_real_escape_string()。または、PDO などの最新の MySQL API に切り替えて、パラメーター化されたクエリを使用することをお勧めします。

于 2012-11-21T10:31:38.910 に答える